From 0427e10ce0d4becdfe497d533d2174e2c02c8f1b Mon Sep 17 00:00:00 2001 From: Theo Dann-Muirhead Date: Mon, 7 Jul 2025 10:53:06 +0100 Subject: [PATCH 1/3] Add missing x, y coordinates to gtk4 mouse event. --- .../Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java index c56e4dec826..a229c31beae 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java @@ -3456,7 +3456,7 @@ int gtk_gesture_release_event (long gesture, int n_press, double x, double y, lo lastInput.x = (int) eventX[0]; lastInput.y = (int) eventY[0]; if (containedInRegion(lastInput.x, lastInput.y)) return GTK4.GTK_EVENT_SEQUENCE_NONE; - boolean cancelled = sendMouseEvent(SWT.MouseUp, eventButton, display.clickCount, 0, false, eventTime, 0, 0, false, eventState); + boolean cancelled = sendMouseEvent(SWT.MouseUp, eventButton, display.clickCount, 0, false, eventTime, x, y, false, eventState); int result = GTK4.GTK_EVENT_SEQUENCE_NONE; if (!cancelled) { result = GTK4.GTK_EVENT_SEQUENCE_CLAIMED; From c73029793e384ae6cab5ccc8b4f65f91f7acf23b Mon Sep 17 00:00:00 2001 From: Theo Dann-Muirhead Date: Mon, 7 Jul 2025 10:53:06 +0100 Subject: [PATCH 2/3] Add missing x, y coordinates to gtk4 mouse event. --- .../Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java index c56e4dec826..a229c31beae 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java @@ -3456,7 +3456,7 @@ int gtk_gesture_release_event (long gesture, int n_press, double x, double y, lo lastInput.x = (int) eventX[0]; lastInput.y = (int) eventY[0]; if (containedInRegion(lastInput.x, lastInput.y)) return GTK4.GTK_EVENT_SEQUENCE_NONE; - boolean cancelled = sendMouseEvent(SWT.MouseUp, eventButton, display.clickCount, 0, false, eventTime, 0, 0, false, eventState); + boolean cancelled = sendMouseEvent(SWT.MouseUp, eventButton, display.clickCount, 0, false, eventTime, x, y, false, eventState); int result = GTK4.GTK_EVENT_SEQUENCE_NONE; if (!cancelled) { result = GTK4.GTK_EVENT_SEQUENCE_CLAIMED; From a0bcb027da83263e497513f3a5e8f802947062ba Mon Sep 17 00:00:00 2001 From: Theo Dann-Muirhead Date: Wed, 9 Jul 2025 11:08:03 +0100 Subject: [PATCH 3/3] 344. Fix double click not registering. --- .../Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java index a229c31beae..e6cdb24b8fa 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java @@ -3432,8 +3432,15 @@ int gtk_gesture_press_event (long gesture, int n_press, double x, double y, long } } } - } else if (n_press == 2) { + } else if (n_press >= 2) { boolean cancelled = sendMouseEvent(SWT.MouseDoubleClick, eventButton, n_press, 0, false, eventTime, x, y, false, eventState); + + //Issue 344, DoubleClick event currently unsupported below sendMouseEvent(). Until DoubleClickSupport is + //added this will catch failed events and try MouseDown instead. + if (cancelled) { + cancelled = sendMouseEvent(SWT.MouseDown, eventButton, n_press, 0, false, eventTime, x, y, false, eventState); + } + if (!cancelled) { result = GTK4.GTK_EVENT_SEQUENCE_CLAIMED; }