10000 Merge f65eb17105368aa570d102c4b8ebe114c2170b24 into 52761deb15b9c0aca… · matplotlib/matplotlib@45d748b · GitHub
[go: up one dir, main page]

Skip to content

Commit 45d748b

Browse files
authored
Merge f65eb17 into 52761de
2 parents 52761de + f65eb17 commit 45d748b

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

lib/matplotlib/_pylab_helpers.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ def destroy(cls, num):
7171
@classmethod
7272
def destroy_fig(cls, fig):
7373
"""Destroy figure *fig*."""
74-
canvas = getattr(fig, "canvas", None)
75-
manager = getattr(canvas, "manager", None)
76-
cls.destroy(manager)
74+
num = next((manager.num for manager in cls.figs.values()
75+
if manager.canvas.figure == fig), None)
76+
if num is not None:
77+
cls.destroy(num)
7778

7879
@classmethod
7980
def destroy_all(cls):

lib/matplotlib/tests/test_backend_bases.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ def test_get_default_filename(tmpdir):
6060
assert filename == 'image.png'
6161

6262

63+
def test_canvas_change():
64+
fig = plt.figure()
65+
# Replaces fig.canvas
66+
canvas = FigureCanvasBase(fig)
67+
# Should still work.
68+
plt.close(fig)
69+
assert not plt.fignum_exists(fig.number)
70+
71+
6372
@pytest.mark.backend('pdf')
6473
def test_non_gui_warning(monkeypatch):
6574
plt.subplots()

0 commit comments

Comments
 (0)
0