8000 rewrite of FigureManagerTk destroy logic · matplotlib/matplotlib@bea3a3f · GitHub
[go: up one dir, main page]

Skip to content

Commit bea3a3f

Browse files
rewrite of FigureManagerTk destroy logic
Likely due to misusing bind("<Destroy>",...) rather than using protocol("WM_DELETE_WINDOW",...), there was a lot of unnecessary logic for dealing with recursive entry into this method.
1 parent 3860b21 commit bea3a3f

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

lib/matplotlib/backends/_backend_tk.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -444,9 +444,8 @@ def show(self):
444444
with _restore_foreground_window_at_end():
445445
if not self._shown:
446446
def destroy(*args):
447-
self.window = None
448447
Gcf.destroy(self)
449-
self.canvas._tkcanvas.bind("<Destroy>", destroy)
448+
self.window.protocol("WM_DELETE_WINDOW", destroy)
450449
self.window.deiconify()
451450
else:
452451
self.canvas.draw_idle()
@@ -456,15 +455,13 @@ def destroy(*args):
456455
self._shown = True
457456

458457
def destroy(self, *args):
459-
if self.window is not None:
460-
#self.toolbar.destroy()
461-
if self.canvas._idle_callback:
462-
self.canvas._tkcanvas.after_cancel(self.canvas._idle_callback)
463-
self.window.destroy()
464-
if Gcf.get_num_fig_managers() == 0:
465-
if self.window is not None and self._owns_mainloop:
466-
self.window.quit()
467-
self.window = None
458+
if self.canvas._idle_callback:
459+
self.canvas._tkcanvas.after_cancel(self.canvas._idle_callback)
460+
461+
self.window.destroy()
462+
463+
if not Gcf.get_num_fig_managers() and self._owns_mainloop:
464+
self.window.quit()
468465

469466
def get_window_title(self):
470467
return self.window.wm_title()

0 commit comments

Comments
 (0)
0