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);