Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 345a8f9

Browse files
committed
Merge pull request #5486 from tacaswell/fix_staletxt
Fix staletxt
2 parents efdc2bf + b69b2ee commit 345a8f9

File tree

3 files changed

+40
-6
lines changed

3 files changed

+40
-6
lines changed

lib/matplotlib/axes/_axes.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,16 +609,14 @@ def text(self, x, y, s, fontdict=None,
609609
else:
610610
t = mtext.Text(
611611
x=x, y=y, text=s)
612-
self._set_artist_props(t)
613612

614613
t.update(default)
615614
if fontdict is not None:
616615
t.update(fontdict)
617616
t.update(kwargs)
618-
self.texts.append(t)
619-
t._remove_method = lambda h: self.texts.remove(h)
620617

621618
t.set_clip_path(self.patch)
619+
self._add_text(t)
622620
return t
623621

624622
@docstring.dedent_interpd
@@ -675,11 +673,9 @@ def annotate(self, *args, **kwargs):
675673
"""
676674
a = mtext.Annotation(*args, **kwargs)
677675
a.set_transform(mtransforms.IdentityTransform())
678-
self._set_artist_props(a)
679676
if 'clip_on' in kwargs:
680677
a.set_clip_path(self.patch)
681-
self.texts.append(a)
682-
a._remove_method = lambda h: self.texts.remove(h)
678+
self._add_text(a)
683679
return a
684680

685681
#### Lines and spans

lib/matplotlib/axes/_base.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@ def add_artist(self, a):
16561656
self._set_artist_props(a)
16571657
a.set_clip_path(self.patch)
16581658
a._remove_method = lambda h: self.artists.remove(h)
1659+
self.stale = True
16591660
return a
16601661

16611662
def add_collection(self, collection, autolim=True):
@@ -1678,6 +1679,7 @@ def add_collection(self, collection, autolim=True):
16781679
self.update_datalim(collection.get_datalim(self.transData))
16791680

16801681
collection._remove_method = lambda h: self.collections.remove(h)
1682+
self.stale = True
16811683
return collection
16821684

16831685
def add_image(self, image):
@@ -1689,6 +1691,7 @@ def add_image(self, image):
16891691
self._set_artist_props(image)
16901692
self.images.append(image)
16911693
image._remove_method = lambda h: self.images.remove(h)
1694+
self.stale = True
16921695
return image
16931696

16941697
def add_line(self, line):
@@ -1707,8 +1710,19 @@ def add_line(self, line):
17071710
line.set_label('_line%d' % len(self.lines))
17081711
self.lines.append(line)
17091712
line._remove_method = lambda h: self.lines.remove(h)
1713+
self.stale = True
17101714
return line
17111715

1716+
def _add_text(self, txt):
1717+
"""
1718+
1719+
"""
1720+
self._set_artist_props(txt)
1721+
self.texts.append(txt)
1722+
txt._remove_method = lambda h: self.texts.remove(h)
1723+
self.stale = True
1724+
return txt
1725+
17121726
def _update_line_limits(self, line):
17131727
"""
17141728
Figures out the data limit of the given line, updating self.dataLim.

lib/matplotlib/tests/test_text.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,27 @@ def test_annotation_negative_fig_coords():
369369
xytext=[-50, 100], textcoords='figure pixels',
370370
xy=[-50, 100], xycoords='figure pixels', fontsize=32,
371371
va='top')
372+
373+
374+
@cleanup
375+
def test_text_stale():
376+
fig, (ax1, ax2) = plt.subplots(1, 2)
377+
plt.draw_all()
378+
assert not ax1.stale
379+
assert not ax2.stale
380+
assert not fig.stale
381+
382+
txt1 = ax1.text(.5, .5, 'aardvark')
383+
assert ax1.stale
384+
assert txt1.stale
385+
assert fig.stale
386+
387+
ann1 = ax2.annotate('aardvark', xy=[.5, .5])
388+
assert ax2.stale
389+
assert ann1.stale
390+
assert fig.stale
391+
392+
plt.draw_all()
393+
assert not ax1.stale
394+
assert not ax2.stale
395+
assert not fig.stale

0 commit comments

Comments
 (0)