Skip to content

Commit a8865f8

Browse files
committed
ENH : add stale flag to all set_* methods in Artist
1 parent ef08aa1 commit a8865f8

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

lib/matplotlib/artist.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ def set_transform(self, t):
316316
self._transform = t
317317
self._transformSet = True
318318
self.pchanged()
319+
self.stale = True
319320

320321
def get_transform(self):
321322
"""
@@ -532,6 +533,7 @@ def set_snap(self, snap):
532533
Only supported by the Agg and MacOSX backends.
533534
"""
534535
self._snap = snap
536+
self.stale = True
535537

536538
def get_sketch_params(self):
537539
"""
@@ -579,13 +581,15 @@ def set_sketch_params(self, scale=None, length=None, randomness=None):
579581
self._sketch = None
580582
else:
581583
self._sketch = (scale, length or 128.0, randomness or 16.0)
584+
self.stale = True
582585

583586
def set_path_effects(self, path_effects):
584587
"""
585588
set path_effects, which should be a list of instances of
586589
matplotlib.patheffect._Base class or its derivatives.
587590
"""
588591
self._path_effects = path_effects
592+
self.stale = True
589593

590594
def get_path_effects(self):
591595
return self._path_effects
@@ -608,6 +612,7 @@ def set_figure(self, fig):
608612
if self.figure and self.figure is not self:
609613
self.add_callback(_stale_figure_callback)
610614
self.pchanged()
615+
self.stale = True
611616

612617
def set_clip_box(self, clipbox):
613618
"""
@@ -617,6 +622,7 @@ def set_clip_box(self, clipbox):
617622
"""
618623
self.clipbox = clipbox
619624
self.pchanged()
625+
self.stale = True
620626

621627
def set_clip_path(self, path, transform=None):
622628
"""
@@ -669,8 +675,10 @@ def set_clip_path(self, path, transform=None):
669675
if not success:
670676
print(type(path), type(transform))
671677
raise TypeError("Invalid arguments to set_clip_path")
672-
678+
# this may result in the callbacks being hit twice, but grantees they
679+
# will be hit at least once
673680
self.pchanged()
681+
self.stale = True
674682

675683
def get_alpha(self):
676684
"""
@@ -719,7 +727,10 @@ def set_clip_on(self, b):
719727
ACCEPTS: [True | False]
720728
"""
721729
self._clipon = b
730+
# This may result in the callbacks being hit twice, but ensures they
731+
# are hit at least once
722732
self.pchanged()
733+
self.stale = True
723734

724735
def _set_gc_clip(self, gc):
725736
'Set the clip properly for the gc'
@@ -758,12 +769,13 @@ def set_agg_filter(self, filter_func):
758769
759770
"""
760771
self._agg_filter = filter_func
772+
self.stale = True
761773

762774
def draw(self, renderer, *args, **kwargs):
763775
'Derived classes drawing method'
764776
if not self.get_visible():
765777
return
766-
self._stale = False
778+
self.stale = False
767779

768780
def set_alpha(self, alpha):
769781
"""
@@ -774,6 +786,7 @@ def set_alpha(self, alpha):
774786
"""
775787
self._alpha = alpha
776788
self.pchanged()
789+
self.stale = True
777790

778791
def set_visible(self, b):
779792
"""
@@ -783,6 +796,7 @@ def set_visible(self, b):
783796
"""
784797
self._visible = b
785798
self.pchanged()
799+
self.stale = True
786800

787801
def set_animated(self, b):
788802
"""
@@ -792,6 +806,7 @@ def set_animated(self, b):
792806
"""
793807
self._animated = b
794808
self.pchanged()
809+
self.stale = True
795810

796811
def update(self, props):
797812
"""
@@ -814,6 +829,7 @@ def update(self, props):
814829
self.eventson = store
815830
if changed:
816831
self.pchanged()
832+
self.stale = True
817833

818834
def get_label(self):
819835
"""
@@ -832,6 +848,7 @@ def set_label(self, s):
832848
else:
833849
self._label = None
834850
self.pchanged()
851+
self.stale = True
835852

836853
def get_zorder(self):
837854
"""
@@ -848,6 +865,7 @@ def set_zorder(self, level):
848865
"""
849866
self.zorder = level
850867
self.pchanged()
868+
self.stale = True
851869

852870
def update_from(self, other):
853871
'Copy properties from *other* to *self*.'
@@ -862,6 +880,7 @@ def update_from(self, other):
862880
self._sketch = other._sketch
863881
self._path_effects = other._path_effects
864882
self.pchanged()
883+
self.stale = True
865884

866885
def properties(self):
867886
"""

0 commit comments

Comments
 (0)