Bug 572708 - [GTK4] Fix ControlExample startup errors - GtkSpinButton
event hooks
- Better documentation for where signals are being connected to
- Connect Gtk3 GtkEntry signals to Gtk4 GtkText
Change-Id: I849465576b35c9c063655781f1f98e8ea51c5854
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
index 8ae23ec..27ef6d8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
@@ -821,14 +821,27 @@
}
@Override
-void hookEvents () {
+void hookEvents() {
super.hookEvents();
- OS.g_signal_connect_closure (handle, OS.changed, display.getClosure (CHANGED), true);
- OS.g_signal_connect_closure (handle, OS.insert_text, display.getClosure (INSERT_TEXT), false);
- OS.g_signal_connect_closure (handle, OS.delete_text, display.getClosure (DELETE_TEXT), false);
- OS.g_signal_connect_closure (handle, OS.value_changed, display.getClosure (VALUE_CHANGED), false);
- OS.g_signal_connect_closure (handle, OS.activate, display.getClosure (ACTIVATE), false);
- OS.g_signal_connect_closure (handle, OS.populate_popup, display.getClosure (POPULATE_POPUP), false);
+
+ /* GtkEditable signals */
+ OS.g_signal_connect_closure(handle, OS.changed, display.getClosure(CHANGED), true);
+ OS.g_signal_connect_closure(handle, OS.insert_text, display.getClosure(INSERT_TEXT), false);
+ OS.g_signal_connect_closure(handle, OS.delete_text, display.getClosure(DELETE_TEXT), false);
+
+ /* GtkSpinButton signals */
+ OS.g_signal_connect_closure(handle, OS.value_changed, display.getClosure(VALUE_CHANGED), false);
+
+ if (GTK.GTK4) {
+ /* GtkText signals */
+ long textHandle = GTK.gtk_widget_get_first_child(handle);
+ OS.g_signal_connect_closure(textHandle, OS.activate, display.getClosure(ACTIVATE), false);
+ } else {
+ /* GtkEntry signals */
+ OS.g_signal_connect_closure(handle, OS.activate, display.getClosure(ACTIVATE), false);
+ OS.g_signal_connect_closure(handle, OS.populate_popup, display.getClosure(POPULATE_POPUP), false);
+ }
+
long imContext = imContext ();
if (imContext != 0) {
OS.g_signal_connect_closure (imContext, OS.commit, display.getClosure (COMMIT), false);