From 873ae235c3afb4f4a02e2a5f0f62fa17a4b916f5 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 28 Aug 2018 23:47:27 -0400 Subject: [PATCH] FIX: use cached renderer on Legend.get_window_extent Closes #11970 --- lib/matplotlib/legend.py | 6 ++++-- lib/matplotlib/tests/test_legend.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/legend.py b/lib/matplotlib/legend.py index a8c3781a70f2..6fe76fabd8e6 100644 --- a/lib/matplotlib/legend.py +++ b/lib/matplotlib/legend.py @@ -976,9 +976,11 @@ def get_title(self): 'Return the `.Text` instance for the legend title.' return self._legend_title_box._text - def get_window_extent(self, *args, **kwargs): + def get_window_extent(self, renderer=None): 'Return extent of the legend.' - return self._legend_box.get_window_extent(*args, **kwargs) + if renderer is None: + renderer = self.figure._cachedRenderer + return self._legend_box.get_window_extent(renderer=renderer) def get_tightbbox(self, renderer): """ diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index 4f92f044fd6b..d508d6f41fc2 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -510,6 +510,17 @@ def test_legend_proper_window_extent(): assert pytest.approx(x01*2, 0.1) == x02 +def test_window_extent_cached_renderer(): + fig, ax = plt.subplots(dpi=100) + ax.plot(range(10), label='Aardvark') + leg = ax.legend() + leg2 = fig.legend() + fig.canvas.draw() + # check that get_window_extent will use the cached renderer + leg.get_window_extent() + leg2.get_window_extent() + + def test_legend_title_fontsize(): # test the title_fontsize kwarg fig, ax = plt.subplots()