diff options
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java | 5 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java index 3ee0242de6..36c42bcdd0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java @@ -919,6 +919,11 @@ long gtk_realize (long widget) { long gtk_scroll_child (long widget, long scrollType, long horizontal) { /* Stop GTK scroll child signal for canvas */ OS.g_signal_stop_emission_by_name (widget, OS.scroll_child); + if (GTK.GTK4) { + // GtkScrollBar moved out of GtkRange, get GtkScrollType from this signal instead + if (horizontalBar != null ) horizontalBar.detail = (int) scrollType; + if (verticalBar != null) verticalBar.detail = (int) scrollType; + } return 1; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java index abdedc58f0..6c58e7978d 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java @@ -599,12 +599,13 @@ long gtk_event_after (long widget, long gdkEvent) { @Override void hookEvents () { super.hookEvents (); - OS.g_signal_connect_closure (handle, OS.change_value, display.getClosure (CHANGE_VALUE), false); OS.g_signal_connect_closure (adjustmentHandle, OS.value_changed, display.getClosure (VALUE_CHANGED), false); if (GTK.GTK4) { // GTK4: event-after replaced with generic event OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT], 0, display.getClosure (EVENT), false); + // GTK4: change-value moved to gtk_scroll_child in Composite } else { + OS.g_signal_connect_closure (handle, OS.change_value, display.getClosure (CHANGE_VALUE), false); OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.getClosure (BUTTON_PRESS_EVENT), false); OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT_AFTER], 0, display.getClosure (EVENT_AFTER), false); } |