mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-31 12:41:20 +08:00
BUG: Validate mouse interaction
Fixes error messages when mouse moved out of axes, plus a few other issues
This commit is contained in:
@@ -83,7 +83,7 @@ class LineTool(CanvasToolBase):
|
||||
self.redraw()
|
||||
|
||||
def on_mouse_press(self, event):
|
||||
if event.button != 1 and event.inaxes == None:
|
||||
if event.button != 1 or not self.ax.in_axes(event):
|
||||
return
|
||||
self.set_visible(True)
|
||||
idx, px_dist = self._handles.closest(event.x, event.y)
|
||||
|
||||
@@ -131,6 +131,11 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
self.redraw()
|
||||
|
||||
def release(self, event):
|
||||
if event.button != 1:
|
||||
return
|
||||
if not self.ax.in_axes(event):
|
||||
self.eventpress = None
|
||||
return
|
||||
RectangleSelector.release(self, event)
|
||||
self._extents_on_press = None
|
||||
# Undo hiding of rectangle and redraw.
|
||||
@@ -139,12 +144,14 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
self.callback_on_release(self.geometry)
|
||||
|
||||
def press(self, event):
|
||||
if event.button != 1 or not self.ax.in_axes(event):
|
||||
return
|
||||
self._set_active_handle(event)
|
||||
if self.active_handle is None:
|
||||
# Clear previous rectangle before drawing new rectangle.
|
||||
self.set_visible(False)
|
||||
self.redraw()
|
||||
self.set_visible(True)
|
||||
self.set_visible(True)
|
||||
RectangleSelector.press(self, event)
|
||||
|
||||
def _set_active_handle(self, event):
|
||||
@@ -172,8 +179,7 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
self._extents_on_press = x1, x2, y1, y2
|
||||
|
||||
def onmove(self, event):
|
||||
|
||||
if self.eventpress is None or self.ignore(event):
|
||||
if self.eventpress is None or not self.ax.in_axes(event):
|
||||
return
|
||||
|
||||
if self.active_handle is None:
|
||||
|
||||
Reference in New Issue
Block a user