@@ -460,6 +460,38 @@ def onselect(epress, erelease):
460460 assert artist .get_alpha () == 0.3
461461
462462
463+ def test_span_selector_clear ():
464+ ax = get_ax ()
465+
466+ def onselect (* args ):
467+ pass
468+
469+ tool = widgets .SpanSelector (ax , onselect , 'horizontal' , interactive = True )
470+ do_event (tool , 'press' , xdata = 10 , ydata = 10 , button = 1 )
471+ do_event (tool , 'onmove' , xdata = 100 , ydata = 120 , button = 1 )
472+ do_event (tool , 'release' , xdata = 100 , ydata = 120 , button = 1 )
473+
474+ # press-release event outside the selector to clear the selector
475+ do_event (tool , 'press' , xdata = 130 , ydata = 130 , button = 1 )
476+ do_event (tool , 'release' , xdata = 130 , ydata = 130 , button = 1 )
477+ assert not tool ._selection_completed
478+
479+ tool = widgets .SpanSelector (ax , onselect , 'horizontal' , interactive = True ,
480+ ignore_event_outside = True )
481+ do_event (tool , 'press' , xdata = 10 , ydata = 10 , button = 1 )
482+ do_event (tool , 'onmove' , xdata = 100 , ydata = 120 , button = 1 )
483+ do_event (tool , 'release' , xdata = 100 , ydata = 120 , button = 1 )
484+
485+ # press-release event outside the selector ignored
486+ do_event (tool , 'press' , xdata = 130 , ydata = 130 , button = 1 )
487+ do_event (tool , 'release' , xdata = 130 , ydata = 130 , button = 1 )
488+ assert tool ._selection_completed
489+ assert tool .extents == (10 , 100 )
490+
491+ do_event (tool , 'on_key_press' , key = 'escape' )
492+ assert not tool ._selection_completed
493+
494+
463495def test_tool_line_handle ():
464496 ax = get_ax ()
465497
0 commit comments