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

Skip to content

Commit 20527b6

Browse files
committed
Recreate the _get_data method and more event refactoring
1 parent 623e05d commit 20527b6

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

lib/matplotlib/widgets.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,18 @@ def update(self):
11931193
self.canvas.draw_idle()
11941194
return False
11951195

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+
11961208
def _clean_event(self, event):
11971209
"""Clean up an event
11981210
@@ -1204,14 +1216,8 @@ def _clean_event(self, event):
12041216
event = self._prev_event
12051217
else:
12061218
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+
12151221
self._prev_event = event
12161222
return event
12171223

@@ -1232,10 +1238,11 @@ def press(self, event):
12321238

12331239
def _release(self, event):
12341240
"""Button release event handler and validator"""
1235-
if not self.ignore(event):
1241+
if not self.ignore(event) and self.eventpress:
12361242
event = self._clean_event(event)
12371243
self.eventrelease = event
12381244
self.release(event)
1245+
self.state.discard('move')
12391246

12401247
def release(self, event):
12411248
"""Button release event handler"""
@@ -1799,9 +1806,9 @@ def onmove(self, event):
17991806
return
18001807
maxd = max(abs(dx_pix), abs(dy_pix))
18011808
if abs(dx_pix) < maxd:
1802-
dx *= maxd / abs(dx_pix)
1809+
dx *= maxd / (abs(dx_pix) + 1e-6)
18031810
if abs(dy_pix) < maxd:
1804-
dy *= maxd / abs(dy_pix)
1811+
dy *= maxd / (abs(dy_pix) + 1e-6)
18051812

18061813
# from center
18071814
if 'center' in self.state:

0 commit comments

Comments
 (0)