Skip to content

Commit 13eee4f

Browse files
committed
[Gtk] Motion notify signal is Gtk 3 only
Rename the handler to gtk3_motion_notify_event to make it obvious and simplify implementations to not try to handle Gtk 4 case as it will never end there.
1 parent 3419b9f commit 13eee4f

File tree

8 files changed

+52
-105
lines changed

8 files changed

+52
-105
lines changed

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4119,7 +4119,7 @@ void gtk4_motion_event(long controller, double x, double y, long event) {
41194119
}
41204120

41214121
@Override
4122-
long gtk_motion_notify_event (long widget, long event) {
4122+
long gtk3_motion_notify_event (long widget, long event) {
41234123
double[] eventX = new double[1];
41244124
double[] eventY = new double[1];
41254125
GDK.gdk_event_get_coords(event, eventX, eventY);
@@ -4147,13 +4147,8 @@ long gtk_motion_notify_event (long widget, long event) {
41474147

41484148
int [] eventButton = new int [1];
41494149
int [] eventState = new int [1];
4150-
if (GTK.GTK4) {
4151-
eventButton[0] = GDK.gdk_button_event_get_button(event);
4152-
eventState[0] = GDK.gdk_event_get_modifier_state(event);
4153-
} else {
4154-
GDK.gdk_event_get_button(event, eventButton);
4155-
GDK.gdk_event_get_state(event, eventState);
4156-
}
4150+
GDK.gdk_event_get_button(event, eventButton);
4151+
GDK.gdk_event_get_state(event, eventState);
41574152

41584153
if (sendDragEvent (eventButton[0], eventState[0], scaledEvent.x, scaledEvent.y, false)) {
41594154
return 1;
@@ -4170,30 +4165,24 @@ long gtk_motion_notify_event (long widget, long event) {
41704165
int [] state = new int [1];
41714166
boolean isHint = false;
41724167

4173-
if (GTK.GTK4) {
4174-
state[0] = GDK.gdk_event_get_modifier_state(event);
4175-
x = eventX[0];
4176-
y = eventY[0];
4177-
} else {
4178-
double [] eventRX = new double[1];
4179-
double [] eventRY = new double[1];
4180-
GDK.gdk_event_get_root_coords(event, eventRX, eventRY);
4181-
x = eventRX[0];
4182-
y = eventRY[0];
4183-
4184-
GdkEventMotion gdkEvent = new GdkEventMotion();
4185-
GTK3.memmove(gdkEvent, event, GdkEventMotion.sizeof);
4186-
state[0] = gdkEvent.state;
4187-
isHint = gdkEvent.is_hint != 0;
4188-
4189-
if (isHint) {
4190-
int [] pointer_x = new int [1], pointer_y = new int [1], mask = new int [1];
4191-
long window = eventWindow ();
4192-
display.getWindowPointerPosition (window, pointer_x, pointer_y, mask);
4193-
x = pointer_x [0];
4194-
y = pointer_y [0];
4195-
state[0] = mask [0];
4196-
}
4168+
double [] eventRX = new double[1];
4169+
double [] eventRY = new double[1];
4170+
GDK.gdk_event_get_root_coords(event, eventRX, eventRY);
4171+
x = eventRX[0];
4172+
y = eventRY[0];
4173+
4174+
GdkEventMotion gdkEvent = new GdkEventMotion();
4175+
GTK3.memmove(gdkEvent, event, GdkEventMotion.sizeof);
4176+
state[0] = gdkEvent.state;
4177+
isHint = gdkEvent.is_hint != 0;
4178+
4179+
if (isHint) {
4180+
int [] pointer_x = new int [1], pointer_y = new int [1], mask = new int [1];
4181+
long window = eventWindow ();
4182+
display.getWindowPointerPosition (window, pointer_x, pointer_y, mask);
4183+
x = pointer_x [0];
4184+
y = pointer_y [0];
4185+
state[0] = mask [0];
41974186
}
41984187

41994188
if (this != display.currentControl) {
@@ -4208,8 +4197,7 @@ long gtk_motion_notify_event (long widget, long event) {
42084197
}
42094198
}
42104199

4211-
return sendMouseEvent(SWT.MouseMove, 0, time, x, y, isHint, state[0])
4212-
? 0 : 1;
4200+
return sendMouseEvent(SWT.MouseMove, 0, time, x, y, isHint, state[0]) ? 0 : 1;
42134201
}
42144202

42154203
@Override

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -519,21 +519,16 @@ long gtk3_key_press_event (long widget, long eventPtr) {
519519
}
520520

521521
@Override
522-
long gtk_motion_notify_event (long widget, long event) {
523-
long result = super.gtk_motion_notify_event (widget, event);
522+
long gtk3_motion_notify_event (long widget, long event) {
523+
long result = super.gtk3_motion_notify_event (widget, event);
524524
if (result != 0) return result;
525525

526526
double [] eventX = new double [1];
527527
double [] eventY = new double [1];
528528

529529
int [] state = new int [1];
530-
if (GTK.GTK4) {
531-
GDK.gdk_event_get_position(event, eventX, eventY);
532-
state[0] = GDK.gdk_event_get_modifier_state(event);
533-
} else {
534-
GDK.gdk_event_get_coords(event, eventX, eventY);
535-
GDK.gdk_event_get_state(event, state);
536-
}
530+
GDK.gdk_event_get_coords(event, eventX, eventY);
531+
GDK.gdk_event_get_state(event, state);
537532

538533
int x = (int) eventX[0];
539534
int y = (int) eventY[0];

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -531,8 +531,8 @@ long gtk3_key_press_event(long widget, long eventPtr) {
531531
}
532532

533533
@Override
534-
long gtk_motion_notify_event(long widget, long eventPtr) {
535-
long result = super.gtk_motion_notify_event(widget, eventPtr);
534+
long gtk3_motion_notify_event(long widget, long eventPtr) {
535+
long result = super.gtk3_motion_notify_event(widget, eventPtr);
536536
if (result != 0) return result;
537537

538538
if (!dragging) return 0;

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,15 +1702,11 @@ long gtk_move_focus (long widget, long directionType) {
17021702
}
17031703

17041704
@Override
1705-
long gtk_motion_notify_event (long widget, long event) {
1705+
long gtk3_motion_notify_event (long widget, long event) {
17061706
if (widget == shellHandle) {
17071707
if (isCustomResize ()) {
17081708
int [] state = new int [1];
1709-
if (GTK.GTK4) {
1710-
state[0] = GDK.gdk_event_get_modifier_state(event);
1711-
} else {
1712-
GDK.gdk_event_get_state(event, state);
1713-
}
1709+
GDK.gdk_event_get_state(event, state);
17141710

17151711
double [] eventRX = new double [1];
17161712
double [] eventRY = new double [1];
@@ -1762,41 +1758,27 @@ long gtk_motion_notify_event (long widget, long event) {
17621758
break;
17631759
}
17641760
if (x != display.resizeBoundsX || y != display.resizeBoundsY) {
1765-
if (GTK.GTK4) {
1766-
/* TODO: GTK4 no longer exist, will probably need to us gdk_toplevel_begin_move &
1767-
* gdk_toplevel_begin_resize to provide this functionality
1768-
*/
1769-
} else {
1770-
GDK.gdk_window_move_resize (gtk_widget_get_window (shellHandle), x, y, width, height);
1771-
}
1761+
GDK.gdk_window_move_resize (gtk_widget_get_window (shellHandle), x, y, width, height);
17721762
} else {
17731763
GTK3.gtk_window_resize (shellHandle, width, height);
17741764
}
17751765
} else {
17761766
double [] eventX = new double [1];
17771767
double [] eventY = new double [1];
1778-
if (GTK.GTK4) {
1779-
GDK.gdk_event_get_position(event, eventX, eventY);
1780-
} else {
1781-
GDK.gdk_event_get_coords(event, eventX, eventY);
1782-
}
1768+
GDK.gdk_event_get_coords(event, eventX, eventY);
17831769

17841770
int mode = getResizeMode (eventX[0], eventY[0]);
17851771
if (mode != display.resizeMode) {
17861772
long cursor = display.getSystemCursor(mode).handle;
1787-
if (GTK.GTK4) {
1788-
GTK4.gtk_widget_set_cursor (shellHandle, cursor);
1789-
} else {
1790-
long window = gtk_widget_get_window (shellHandle);
1791-
GDK.gdk_window_set_cursor (window, cursor);
1792-
}
1773+
long window = gtk_widget_get_window (shellHandle);
1774+
GDK.gdk_window_set_cursor (window, cursor);
17931775
display.resizeMode = mode;
17941776
}
17951777
}
17961778
}
17971779
return 0;
17981780
}
1799-
return super.gtk_motion_notify_event (widget, event);
1781+
return super.gtk3_motion_notify_event (widget, event);
18001782
}
18011783

18021784
@Override

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,15 +2327,10 @@ long gtk_draw (long widget, long cairo) {
23272327
}
23282328

23292329
@Override
2330-
long gtk_motion_notify_event (long widget, long event) {
2331-
if (GTK.GTK4) {
2332-
long surface = GDK.gdk_event_get_surface(event);
2333-
if (surface != gtk_widget_get_surface(handle)) return 0;
2334-
} else {
2335-
long window = GDK.gdk_event_get_window (event);
2336-
if (window != GTK3.gtk_tree_view_get_bin_window (handle)) return 0;
2337-
}
2338-
return super.gtk_motion_notify_event (widget, event);
2330+
long gtk3_motion_notify_event (long widget, long event) {
2331+
long window = GDK.gdk_event_get_window (event);
2332+
if (window != GTK3.gtk_tree_view_get_bin_window (handle)) return 0;
2333+
return super.gtk3_motion_notify_event (widget, event);
23392334
}
23402335

23412336
@Override

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2000, 2025 IBM Corporation and others.
2+
* Copyright (c) 2000, 2026 IBM Corporation and others.
33
*
44
* This program and the accompanying materials
55
* are made available under the terms of the Eclipse Public License 2.0
@@ -470,7 +470,7 @@ boolean grab () {
470470
@Override
471471
long gtk_button_release_event (long widget, long event) {
472472
Control.mouseDown = false;
473-
return gtk_mouse (GDK.GDK_BUTTON_RELEASE, widget, event);
473+
return gtk3_mouse (GDK.GDK_BUTTON_RELEASE, widget, event);
474474
}
475475

476476
@Override
@@ -612,27 +612,19 @@ long gtk3_key_press_event (long widget, long eventPtr) {
612612
}
613613

614614
@Override
615-
long gtk_motion_notify_event (long widget, long eventPtr) {
615+
long gtk3_motion_notify_event (long widget, long eventPtr) {
616616
long cursor = this.cursor != null ? this.cursor.handle : 0;
617617
if (cursor != lastCursor) {
618618
ungrab ();
619619
grabbed = grab ();
620620
lastCursor = cursor;
621621
}
622-
return gtk_mouse (GDK.GDK_MOTION_NOTIFY, widget, eventPtr);
622+
return gtk3_mouse (GDK.GDK_MOTION_NOTIFY, widget, eventPtr);
623623
}
624624

625-
long gtk_mouse (int eventType, long widget, long eventPtr) {
625+
long gtk3_mouse (int eventType, long widget, long eventPtr) {
626626
int [] newX = new int [1], newY = new int [1];
627-
if (GTK.GTK4) {
628-
double[] newXDouble = new double[1], newYDouble = new double[1];
629-
display.getPointerPosition(newXDouble, newYDouble);
630-
631-
newX[0] = (int)newXDouble[0];
632-
newY[0] = (int)newYDouble[0];
633-
} else {
634-
display.getWindowPointerPosition(window, newX, newY, null);
635-
}
627+
display.getWindowPointerPosition(window, newX, newY, null);
636628

637629
if (oldX != newX [0] || oldY != newY [0]) {
638630
Rectangle [] oldRectangles = rectangles;
@@ -913,7 +905,7 @@ boolean processEvent (long eventPtr) {
913905
int eventType = GDK.gdk_event_get_event_type(eventPtr);
914906
long widget = GTK3.gtk_get_event_widget (eventPtr);
915907
switch (eventType) {
916-
case GDK.GDK_MOTION_NOTIFY: gtk_motion_notify_event (widget, eventPtr); break;
908+
case GDK.GDK_MOTION_NOTIFY: gtk3_motion_notify_event (widget, eventPtr); break;
917909
case GDK.GDK_BUTTON_RELEASE: gtk_button_release_event (widget, eventPtr); break;
918910
case GDK.GDK_KEY_PRESS: gtk3_key_press_event (widget, eventPtr); break;
919911
case GDK.GDK_KEY_RELEASE: gtk3_key_release_event (widget, eventPtr); break;

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2497,15 +2497,10 @@ long gtk_draw (long widget, long cairo) {
24972497
}
24982498

24992499
@Override
2500-
long gtk_motion_notify_event (long widget, long event) {
2501-
if (GTK.GTK4) {
2502-
long surface = GDK.gdk_event_get_surface(event);
2503-
if (surface != gtk_widget_get_surface(handle)) return 0;
2504-
} else {
2505-
long window = GDK.gdk_event_get_window (event);
2506-
if (window != GTK3.gtk_tree_view_get_bin_window (handle)) return 0;
2507-
}
2508-
return super.gtk_motion_notify_event (widget, event);
2500+
long gtk3_motion_notify_event (long widget, long event) {
2501+
long window = GDK.gdk_event_get_window (event);
2502+
if (window != GTK3.gtk_tree_view_get_bin_window (handle)) return 0;
2503+
return super.gtk3_motion_notify_event (widget, event);
25092504
}
25102505

25112506
@Override

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ long gtk_month_changed (long widget) {
10451045
return 0;
10461046
}
10471047

1048-
long gtk_motion_notify_event (long widget, long event) {
1048+
long gtk3_motion_notify_event (long widget, long event) {
10491049
return 0;
10501050
}
10511051

@@ -2649,7 +2649,7 @@ long windowProc (long handle, long arg0, long user_data) {
26492649
case LEAVE_NOTIFY_EVENT: return gtk_leave_notify_event (handle, arg0);
26502650
case MAP_EVENT: return gtk_map_event (handle, arg0);
26512651
case MNEMONIC_ACTIVATE: return gtk_mnemonic_activate (handle, arg0);
2652-
case MOTION_NOTIFY_EVENT: return gtk_motion_notify_event (handle, arg0);
2652+
case MOTION_NOTIFY_EVENT: return gtk3_motion_notify_event (handle, arg0);
26532653
case MOVE_FOCUS: return gtk_move_focus (handle, arg0);
26542654
case POPULATE_POPUP: return gtk_populate_popup (handle, arg0);
26552655
case SCROLL_EVENT: return gtk_scroll_event (handle, arg0);

0 commit comments

Comments
 (0)