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

Skip to content

Commit bc1c5cc

Browse files
authored
Merge pull request #27409 from ericpre/fix_selection_completed
Fix setting `_selection_completed` in `SpanSelector` when spanselector is initialised using `extents`
2 parents 2cd4a40 + 50e70a4 commit bc1c5cc

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

lib/matplotlib/tests/test_widgets.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -974,6 +974,23 @@ def onselect(vmin, vmax):
974974
assert tool.extents == (17, 35)
975975

976976

977+
def test_span_selector_extents(ax):
978+
tool = widgets.SpanSelector(
979+
ax, lambda a, b: None, "horizontal", ignore_event_outside=True
980+
)
981+
tool.extents = (5, 10)
982+
983+
assert tool.extents == (5, 10)
984+
assert tool._selection_completed
985+
986+
# Since `ignore_event_outside=True`, this event should be ignored
987+
press_data = (12, 14)
988+
release_data = (20, 14)
989+
click_and_drag(tool, start=press_data, end=release_data)
990+
991+
assert tool.extents == (5, 10)
992+
993+
977994
@pytest.mark.parametrize('kwargs', [
978995
dict(),
979996
dict(useblit=False, props=dict(color='red')),

lib/matplotlib/widgets.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,7 +2684,7 @@ def _press(self, event):
26842684
# visibility to False and extents to (v, v)
26852685
# update will be called when setting the extents
26862686
self._visible = False
2687-
self.extents = v, v
2687+
self._set_extents((v, v))
26882688
# We need to set the visibility back, so the span selector will be
26892689
# drawn when necessary (span width > 0)
26902690
self._visible = True
@@ -2797,7 +2797,7 @@ def _onmove(self, event):
27972797
if vmin > vmax:
27982798
vmin, vmax = vmax, vmin
27992799

2800-
self.extents = vmin, vmax
2800+
self._set_extents((vmin, vmax))
28012801

28022802
if self.onmove_callback is not None:
28032803
self.onmove_callback(vmin, vmax)
@@ -2866,6 +2866,10 @@ def extents(self):
28662866

28672867
@extents.setter
28682868
def extents(self, extents):
2869+
self._set_extents(extents)
2870+
self._selection_completed = True
2871+
2872+
def _set_extents(self, extents):
28692873
# Update displayed shape
28702874
if self.snap_values is not None:
28712875
extents = tuple(self._snap(extents, self.snap_values))

0 commit comments

Comments
 (0)