From 613845b35360527327f946289b7a4e97c574ff3e Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Mon, 6 Feb 2023 09:51:15 -0600 Subject: [PATCH] Backport PR #25158: Disconnect SubplotTool destroyer callback on tool_fig close --- lib/matplotlib/backend_bases.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index c573c369e9e3..6ce8ce61a119 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -3357,10 +3357,14 @@ def configure_subplots(self, *args): tool_fig = manager.canvas.figure tool_fig.subplots_adjust(top=0.9) self.subplot_tool = widgets.SubplotTool(self.canvas.figure, tool_fig) - tool_fig.canvas.mpl_connect( - "close_event", lambda e: delattr(self, "subplot_tool")) - self.canvas.mpl_connect( + cid = self.canvas.mpl_connect( "close_event", lambda e: manager.destroy()) + + def on_tool_fig_close(e): + self.canvas.mpl_disconnect(cid) + del self.subplot_tool + + tool_fig.canvas.mpl_connect("close_event", on_tool_fig_close) manager.show() return self.subplot_tool