@@ -1193,6 +1193,18 @@ def update(self):
1193
1193
self .canvas .draw_idle ()
1194
1194
return False
1195
1195
1196
+ def _get_data (self , event ):
1197
+ """Get the xdata and ydata for event, with limits"""
1198
+ if event .xdata is None :
1199
+ return None , None
1200
+ x0 , x1 = self .ax .get_xbound ()
1201
+ y0 , y1 = self .ax .get_ybound ()
1202
+ xdata = max (x0 , event .xdata )
1203
+ xdata = min (x1 , xdata )
1204
+ ydata = max (y0 , event .ydata )
1205
+ ydata = min (y1 , ydata )
1206
+ return xdata , ydata
1207
+
1196
1208
def _clean_event (self , event ):
1197
1209
"""Clean up an event
1198
1210
@@ -1204,14 +1216,8 @@ def _clean_event(self, event):
1204
1216
event = self ._prev_event
1205
1217
else :
1206
1218
event = copy .copy (event )
1207
-
1208
- x0 , x1 = self .ax .get_xbound ()
1209
- y0 , y1 = self .ax .get_ybound ()
1210
- xdata = max (x0 , event .xdata )
1211
- event .xdata = min (x1 , xdata )
1212
- ydata = max (y0 , event .ydata )
1213
- event .ydata = min (y1 , ydata )
1214
-
1219
+ event .xdata , event .ydata = self ._get_data (event )
1220
+
1215
1221
self ._prev_event = event
1216
1222
return event
1217
1223
@@ -1232,10 +1238,11 @@ def press(self, event):
1232
1238
1233
1239
def _release (self , event ):
1234
1240
"""Button release event handler and validator"""
1235
- if not self .ignore (event ):
1241
+ if not self .ignore (event ) and self . eventpress :
1236
1242
event = self ._clean_event (event )
1237
1243
self .eventrelease = event
1238
1244
self .release (event )
1245
+ self .state .discard ('move' )
1239
1246
1240
1247
def release (self , event ):
1241
1248
"""Button release event handler"""
@@ -1799,9 +1806,9 @@ def onmove(self, event):
1799
1806
return
1800
1807
maxd = max (abs (dx_pix ), abs (dy_pix ))
1801
1808
if abs (dx_pix ) < maxd :
1802
- dx *= maxd / abs (dx_pix )
1809
+ dx *= maxd / ( abs (dx_pix ) + 1e-6 )
1803
1810
if abs (dy_pix ) < maxd :
1804
- dy *= maxd / abs (dy_pix )
1811
+ dy *= maxd / ( abs (dy_pix ) + 1e-6 )
1805
1812
1806
1813
# from center
1807
1814
if 'center' in self .state :
0 commit comments