Skip to content

Commit e149b96

Browse files
committed
Clean up double clicking
1 parent e30cdb4 commit e149b96

File tree

4 files changed

+8
-5
lines changed

4 files changed

+8
-5
lines changed

src/ndv/views/_jupyter/_app.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,14 @@ def handle_event(self: RemoteFrameBuffer, ev: dict) -> None:
9292
intercepted |= receiver.on_mouse_press(mpe)
9393
receiver.mousePressed.emit(mpe)
9494
elif etype == "double_click":
95-
# Step 1: Double Click
95+
# Note that in Jupyter, a double_click event is not a pointer event
96+
# and as such, we need to handle both press and release. See
97+
# https://github.com/vispy/jupyter_rfb/blob/62831dd5a87bc19b4fd5f921d802ed21141e61ec/js/lib/widget.js#L270
9698
btn = JupyterAppWrap.mouse_btn(ev["button"])
9799
mpe = MousePressEvent(x=ev["x"], y=ev["y"], btn=btn)
98100
intercepted |= receiver.on_mouse_double_press(mpe)
99-
receiver.mousePressed.emit(mpe)
100-
# Step 2: Release (Jupyter doesn't emit a release after double-click)
101-
# TODO: What about double-click + move?
101+
receiver.mouseDoublePressed.emit(mpe)
102+
# Release
102103
mre = MouseReleaseEvent(x=ev["x"], y=ev["y"], btn=btn)
103104
intercepted |= receiver.on_mouse_release(mre)
104105
receiver.mouseReleased.emit(mre)

src/ndv/views/_qt/_app.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def eventFilter(self, obj: QObject | None, qevent: QEvent | None) -> bool:
143143
self.active_button = btn
144144
mpe = MousePressEvent(x=pos.x(), y=pos.y(), btn=self.active_button)
145145
intercept |= receiver.on_mouse_double_press(mpe)
146-
receiver.mousePressed.emit(mpe)
146+
receiver.mouseDoublePressed.emit(mpe)
147147
elif etype == QEvent.Type.MouseButtonPress:
148148
self.active_button = btn
149149
mpe = MousePressEvent(x=pos.x(), y=pos.y(), btn=self.active_button)

src/ndv/views/_wx/_app.py

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def on_mouse_double_press(event: MouseEvent) -> None:
102102
active_button = MouseButton.LEFT
103103
mpe = MousePressEvent(x=event.GetX(), y=event.GetY(), btn=active_button)
104104
if not receiver.on_mouse_double_press(mpe):
105+
receiver.mouseDoublePressed.emit(mpe)
105106
event.Skip()
106107

107108
def on_mouse_release(event: MouseEvent) -> None:

src/ndv/views/bases/_graphics/_mouseable.py

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Mouseable:
1818

1919
mouseMoved = Signal(MouseMoveEvent)
2020
mousePressed = Signal(MousePressEvent)
21+
mouseDoublePressed = Signal(MousePressEvent)
2122
mouseReleased = Signal(MouseReleaseEvent)
2223

2324
def on_mouse_move(self, event: MouseMoveEvent) -> bool:

0 commit comments

Comments
 (0)