Skip to content

Commit 3cade36

Browse files
committed
Inhibit dragging while zooming/plotting is active
1 parent a0fe743 commit 3cade36

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

matplotlib_window/base.py

+12
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ def on_click(self, event: Event) -> t.Any:
125125
if event.inaxes != self.parent_axes:
126126
return
127127

128+
# Return early if we aren't able to obtain a widgetlock
129+
# Obtaining a lock allows us to prevent dragging when zoom/pan is active
130+
if not self.parent_canvas.widgetlock.available(self):
131+
return
132+
128133
if not self.should_move(event):
129134
return
130135

@@ -137,6 +142,9 @@ def on_click(self, event: Event) -> t.Any:
137142
self.mouse_motion = self.parent_canvas.mpl_connect("motion_notify_event", self.on_motion)
138143
self.click_release = self.parent_canvas.mpl_connect("button_release_event", self.on_release)
139144

145+
# Obtaining a lock allows us to prevent dragging when zoom/pan is active
146+
self.parent_canvas.widgetlock(self)
147+
140148
def on_release(self, event: Event) -> t.Any:
141149
"""
142150
Mouse button release callback.
@@ -154,6 +162,10 @@ def disconnect(self) -> None:
154162
self.clicked = False
155163
self.parent_canvas.mpl_disconnect(self.mouse_motion)
156164
self.parent_canvas.mpl_disconnect(self.click_release)
165+
166+
# Release any widgetlock when drag is finished
167+
self.parent_canvas.widgetlock.release(self)
168+
157169
self._redraw()
158170

159171
def validate_snap_to(self, snap_to: Line2D | None) -> Line2D | None:

uv.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)