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

Skip to content

Commit 4a595e0

Browse files
committed
Added ability to drag out of axes with span selector. event was not registered before.
svn path=/trunk/matplotlib/; revision=1874
1 parent 866a376 commit 4a595e0

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

lib/matplotlib/widgets.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,10 @@ def __init__(self, ax, onselect, direction, minspan=None, useblit=False, rectpro
732732
self.useblit = useblit
733733
self.minspan = minspan
734734

735+
# Needed when dragging out of axes
736+
self.buttonDown = False
737+
self.prev = (0, 0)
738+
735739
if self.direction == 'horizontal':
736740
trans = blend_xy_sep_transform(self.ax.transData, self.ax.transAxes)
737741
w,h = 0,1
@@ -760,6 +764,7 @@ def ignore(self, event):
760764
def press(self, event):
761765
'on button press event'
762766
if self.ignore(event): return
767+
self.buttonDown = True
763768

764769
self.rect.set_visible(self.visible)
765770
if self.direction == 'horizontal':
@@ -771,15 +776,17 @@ def press(self, event):
771776

772777
def release(self, event):
773778
'on button release event'
774-
if self.pressv is None or self.ignore(event): return
779+
if self.pressv is None or (self.ignore(event) and not self.buttonDown): return
780+
self.buttonDown = False
775781

776782
self.rect.set_visible(False)
777783
self.canvas.draw()
778784
vmin = self.pressv
779785
if self.direction == 'horizontal':
780-
vmax = event.xdata
786+
vmax = event.xdata or self.prev[0]
781787
else:
782-
vmax = event.ydata
788+
vmax = event.ydata or self.prev[1]
789+
783790
if vmin>vmax: vmin, vmax = vmax, vmin
784791
span = vmax - vmin
785792
if self.minspan is not None and span<self.minspan: return
@@ -802,7 +809,8 @@ def update(self):
802809
def onmove(self, event):
803810
'on motion notify event'
804811
if self.pressv is None or self.ignore(event): return
805-
x,y = event.xdata, event.ydata
812+
x, y = event.xdata, event.ydata
813+
self.prev = x, y
806814
if self.direction == 'horizontal':
807815
v = x
808816
else:

0 commit comments

Comments
 (0)