diff --git a/lib/matplotlib/backends/backend_gtk.py b/lib/matplotlib/backends/backend_gtk.py index d71365244d96..06d2dd0d8c75 100644 --- a/lib/matplotlib/backends/backend_gtk.py +++ b/lib/matplotlib/backends/backend_gtk.py @@ -79,10 +79,12 @@ def draw_if_interactive(): if figManager is not None: figManager.canvas.draw_idle() - +gtk_main_called = False class Show(ShowBase): def mainloop(self): if gtk.main_level() == 0: + global gtk_main_called + gtk_main_called = True gtk.main() show = Show() @@ -606,7 +608,8 @@ def destroy(self, *args): if Gcf.get_num_fig_managers()==0 and \ not matplotlib.is_interactive() and \ - gtk.main_level() >= 1: + gtk.main_level() >= 1 and \ + gtk_main_called: gtk.main_quit() def show(self): diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index 740d8bb0e872..605f7b8f6821 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -67,9 +67,12 @@ def draw_if_interactive(): if figManager is not None: figManager.canvas.draw_idle() +gtk_main_called = False class Show(ShowBase): def mainloop(self): if Gtk.main_level() == 0: + global gtk_main_called + gtk_main_called = True Gtk.main() show = Show() @@ -437,7 +440,8 @@ def destroy(self, *args): if Gcf.get_num_fig_managers()==0 and \ not matplotlib.is_interactive() and \ - Gtk.main_level() >= 1: + Gtk.main_level() >= 1 and \ + gtk_main_called: Gtk.main_quit() def show(self):