Bug 570533 - [GTK4] Make separate GTK3.java and GTK4.java native
wrappers - GtkWidget

- Move GtkWidget functions to designated GTK3 & GTK4 files
- Note some functions that include Java data types (aka GtkAllocation)
have not been moved yet (I still need to update the generation to allow
for these functions to move without compilation errors)

Change-Id: I5f28b909eab5c6b53f649ea43efe6a93ccf83f32
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/180003
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT AWT/gtk/org/eclipse/swt/awt/SWT_AWT.java b/bundles/org.eclipse.swt/Eclipse SWT AWT/gtk/org/eclipse/swt/awt/SWT_AWT.java
index 6fa9d35..a633717 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT AWT/gtk/org/eclipse/swt/awt/SWT_AWT.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT AWT/gtk/org/eclipse/swt/awt/SWT_AWT.java
@@ -26,6 +26,7 @@
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 import org.eclipse.swt.internal.gtk4.*;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.swt.widgets.Composite;
@@ -192,9 +193,9 @@
 
 					long xWindow;
 					if (GTK.GTK4) {
-						xWindow = GDK.gdk_x11_surface_get_xid(GTK4.gtk_native_get_surface (GTK.gtk_widget_get_native(shell.handle)));
+						xWindow = GDK.gdk_x11_surface_get_xid(GTK4.gtk_native_get_surface (GTK4.gtk_widget_get_native(shell.handle)));
 					} else {
-						xWindow = GDK.gdk_x11_window_get_xid (GTK.gtk_widget_get_window (GTK.gtk_widget_get_toplevel (shell.handle)));
+						xWindow = GDK.gdk_x11_window_get_xid (GTK3.gtk_widget_get_window (GTK3.gtk_widget_get_toplevel (shell.handle)));
 					}
 
 					OS.XSetTransientForHint(GDK.gdk_x11_display_get_xdisplay(GDK.gdk_display_get_default()), awtHandle, xWindow);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java
index 6ac5ea3..da9c60d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/Accessible.java
@@ -20,6 +20,7 @@
 import org.eclipse.swt.*;
 import org.eclipse.swt.internal.gtk.*;
 import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 import org.eclipse.swt.widgets.*;
 
 /**
@@ -497,7 +498,7 @@
 
 		if (control instanceof Label) {
 			if (GTK.GTK4) {
-				for (long child = GTK.gtk_widget_get_first_child(result); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+				for (long child = GTK4.gtk_widget_get_first_child(result); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 					if (GTK.gtk_widget_get_visible(child)) {
 						result = child;
 						break;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
index 1d0dd81..c6f7c05 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
@@ -4552,8 +4552,8 @@
 		if (GTK.GTK4) {
 			//TODO: GTK4 no gdk_surface_get_origin
 		} else {
-			long topLevel = GTK.gtk_widget_get_toplevel (widget);
-			long window = GTK.gtk_widget_get_window (topLevel);
+			long topLevel = GTK3.gtk_widget_get_toplevel (widget);
+			long window = GTK3.gtk_widget_get_window (topLevel);
 			GDK.gdk_window_get_origin (window, x, y);
 		}
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java
index 96eadb9..2432175 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java
@@ -111,7 +111,7 @@
 		if (GTK.GTK4) {
 			GTK4.gtk_window_destroy(clipboardOwner);
 		} else {
-			GTK.gtk_widget_destroy(clipboardOwner);
+			GTK3.gtk_widget_destroy(clipboardOwner);
 		}
 	}
 	clipboardOwner = 0;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java
index 8643e3e..060f3c6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java
@@ -184,7 +184,7 @@
 		control.setData(DND.DRAG_SOURCE_KEY, this);
 
 		long dragSourceController = GTK4.gtk_drag_source_new();
-		GTK.gtk_widget_add_controller(control.handle, dragSourceController);
+		GTK4.gtk_widget_add_controller(control.handle, dragSourceController);
 
 		OS.g_signal_connect(dragSourceController, OS.drag_begin, dragBeginProc.getAddress(), 0);
 		OS.g_signal_connect(dragSourceController, OS.prepare, dragPrepareProc.getAddress(), 0);
@@ -436,10 +436,10 @@
 	 */
 	long display;
 	if (GTK.GTK4) {
-		long surface = GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native (widget));
+		long surface = GTK4.gtk_native_get_surface(GTK4.gtk_widget_get_native (widget));
 		display = GDK.gdk_surface_get_display(surface);
 	} else {
-		display = GDK.gdk_window_get_display(GTK.gtk_widget_get_window(widget));
+		display = GDK.gdk_window_get_display(GTK3.gtk_widget_get_window(widget));
 	}
 	long pointer = GDK.gdk_get_pointer(display);
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java
index a758f7f..96dc681 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java
@@ -160,7 +160,7 @@
 		int actions = opToOsOp(style);
 		dropController = GTK4.gtk_drop_target_async_new(0, actions);
 
-		GTK.gtk_widget_add_controller(control.handle, dropController);
+		GTK4.gtk_widget_add_controller(control.handle, dropController);
 	} else {
 		if (Drag_Motion == null || Drag_Leave == null || Drag_Data_Received == null || Drag_Drop == null) {
 			DND.error(DND.ERROR_CANNOT_INIT_DROP);
@@ -801,7 +801,7 @@
 	if (GTK.GTK4) {
 		// TODO: GTK4 no gdk_surface_get_origin
 	} else {
-		long window = GTK.gtk_widget_get_window (control.handle);
+		long window = GTK3.gtk_widget_get_window (control.handle);
 		GDK.gdk_window_get_origin(window, origin_x, origin_y);
 	}
 	Point coordinates = DPIUtil.autoScaleDown(new Point(origin_x[0] + x, origin_y[0] + y));
diff --git a/bundles/org.eclipse.swt/Eclipse SWT OpenGL/gtk/org/eclipse/swt/opengl/GLCanvas.java b/bundles/org.eclipse.swt/Eclipse SWT OpenGL/gtk/org/eclipse/swt/opengl/GLCanvas.java
index 4af47af..17d5d07 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT OpenGL/gtk/org/eclipse/swt/opengl/GLCanvas.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT OpenGL/gtk/org/eclipse/swt/opengl/GLCanvas.java
@@ -17,6 +17,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 import org.eclipse.swt.internal.opengl.glx.*;
 import org.eclipse.swt.widgets.*;
 
@@ -109,7 +110,7 @@
 	}
 	glxAttrib [pos++] = 0;
 	GTK.gtk_widget_realize (handle);
-	long window = GTK.gtk_widget_get_window (handle);
+	long window = GTK3.gtk_widget_get_window (handle);
 
 	long xDisplay = GDK.gdk_x11_display_get_xdisplay(GDK.gdk_window_get_display(window));
 	long infoPtr = GLX.glXChooseVisual (xDisplay, OS.XDefaultScreen (xDisplay), glxAttrib);
@@ -169,7 +170,7 @@
 			GDK.gdk_window_resize (glWindow, clientArea.width, clientArea.height);
 			break;
 		case SWT.Dispose:
-			long window1 = GTK.gtk_widget_get_window (handle);
+			long window1 = GTK3.gtk_widget_get_window (handle);
 			long xDisplay1 = gdk_x11_display_get_xdisplay (window1);
 			if (context != 0) {
 				if (GLX.glXGetCurrentContext () == context) {
@@ -201,7 +202,7 @@
  */
 public GLData getGLData () {
 	checkWidget ();
-	long window = GTK.gtk_widget_get_window (handle);
+	long window = GTK3.gtk_widget_get_window (handle);
 	long xDisplay = gdk_x11_display_get_xdisplay (window);
 	GLData data = new GLData ();
 	int [] value = new int [1];
@@ -264,7 +265,7 @@
 public void setCurrent () {
 	checkWidget ();
 	if (GLX.glXGetCurrentContext () == context) return;
-	long window = GTK.gtk_widget_get_window (handle);
+	long window = GTK3.gtk_widget_get_window (handle);
 	long xDisplay = gdk_x11_display_get_xdisplay (window);
 	GLX.glXMakeCurrent (xDisplay, xWindow, context);
 }
@@ -279,7 +280,7 @@
  */
 public void swapBuffers () {
 	checkWidget ();
-	long window = GTK.gtk_widget_get_window (handle);
+	long window = GTK3.gtk_widget_get_window (handle);
 	long xDisplay = gdk_x11_display_get_xdisplay (window);
 	GLX.glXSwapBuffers (xDisplay, xWindow);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3.c
index 305cc93..1195e04 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3.c
@@ -1547,6 +1547,62 @@
 }
 #endif
 
+#ifndef NO_gtk_1widget_1add_1accelerator
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1add_1accelerator)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jint arg3, jint arg4, jint arg5)
+{
+	jbyte *lparg1=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1add_1accelerator_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	gtk_widget_add_accelerator((GtkWidget *)arg0, (const gchar *)lparg1, (GtkAccelGroup *)arg2, (guint)arg3, (GdkModifierType)arg4, arg5);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1add_1accelerator_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1add_1events
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1add_1events)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1add_1events_FUNC);
+	gtk_widget_add_events((GtkWidget *)arg0, (gint)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1add_1events_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1destroy
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1destroy)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1destroy_FUNC);
+	gtk_widget_destroy((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1destroy_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1draw
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1draw)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1draw_FUNC);
+	gtk_widget_draw((GtkWidget *)arg0, (cairo_t *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1draw_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1event
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1widget_1event)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1event_FUNC);
+	rc = (jboolean)gtk_widget_event((GtkWidget *)arg0, (GdkEvent *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1event_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1widget_1get_1accessible
 JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1accessible)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -1559,6 +1615,288 @@
 }
 #endif
 
+#ifndef NO_gtk_1widget_1get_1can_1default
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1widget_1get_1can_1default)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1can_1default_FUNC);
+	rc = (jboolean)gtk_widget_get_can_default((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1can_1default_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1events
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1widget_1get_1events)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1events_FUNC);
+	rc = (jint)gtk_widget_get_events((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1events_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1has_1window
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1widget_1get_1has_1window)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1has_1window_FUNC);
+	rc = (jboolean)gtk_widget_get_has_window((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1has_1window_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1preferred_1height
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1get_1preferred_1height)
+	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1height_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	gtk_widget_get_preferred_height((GtkWidget *)arg0, (gint *)lparg1, (gint *)lparg2);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1height_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1preferred_1height_1for_1width
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1get_1preferred_1height_1for_1width)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jintArray arg2, jintArray arg3)
+{
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1height_1for_1width_FUNC);
+	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
+	gtk_widget_get_preferred_height_for_width((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
+fail:
+	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1height_1for_1width_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1preferred_1width_1for_1height
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1get_1preferred_1width_1for_1height)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jintArray arg2, jintArray arg3)
+{
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1width_1for_1height_FUNC);
+	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
+	gtk_widget_get_preferred_width_for_height((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
+fail:
+	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1width_1for_1height_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1screen
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1screen)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1screen_FUNC);
+	rc = (jlong)gtk_widget_get_screen((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1screen_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1toplevel
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1toplevel)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1toplevel_FUNC);
+	rc = (jlong)gtk_widget_get_toplevel((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1toplevel_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1window
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1window)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1get_1window_FUNC);
+	rc = (jlong)gtk_widget_get_window((GtkWidget *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1get_1window_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1input_1shape_1combine_1region
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1input_1shape_1combine_1region)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1input_1shape_1combine_1region_FUNC);
+	gtk_widget_input_shape_combine_region((GtkWidget *)arg0, (cairo_region_t *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1input_1shape_1combine_1region_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1override_1font
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1override_1font)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1override_1font_FUNC);
+	gtk_widget_override_font((GtkWidget *)arg0, (const PangoFontDescription *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1override_1font_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1widget_1remove_1accelerator
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1remove_1accelerator)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1remove_1accelerator_FUNC);
+	gtk_widget_remove_accelerator((GtkWidget *)arg0, (GtkAccelGroup *)arg1, (guint)arg2, (GdkModifierType)arg3);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1remove_1accelerator_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1reparent
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1reparent)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1reparent_FUNC);
+	gtk_widget_reparent((GtkWidget *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1reparent_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1widget_1set_1can_1default
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1set_1can_1default)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1set_1can_1default_FUNC);
+	gtk_widget_set_can_default((GtkWidget *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1set_1can_1default_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1set_1double_1buffered
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1set_1double_1buffered)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1set_1double_1buffered_FUNC);
+	gtk_widget_set_double_buffered((GtkWidget *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1set_1double_1buffered_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1widget_1set_1has_1window
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1set_1has_1window)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1set_1has_1window_FUNC);
+	gtk_widget_set_has_window((GtkWidget *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1set_1has_1window_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1set_1parent_1window
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1set_1parent_1window)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1set_1parent_1window_FUNC);
+	gtk_widget_set_parent_window((GtkWidget *)arg0, (GdkWindow *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1set_1parent_1window_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1set_1redraw_1on_1allocate
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1set_1redraw_1on_1allocate)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1set_1redraw_1on_1allocate_FUNC);
+	gtk_widget_set_redraw_on_allocate((GtkWidget *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1set_1redraw_1on_1allocate_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1shape_1combine_1region
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1shape_1combine_1region)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1shape_1combine_1region_FUNC);
+	gtk_widget_shape_combine_region((GtkWidget *)arg0, (cairo_region_t *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1shape_1combine_1region_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1style_1get__J_3B_3IJ
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1style_1get__J_3B_3IJ)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jintArray arg2, jlong arg3)
+{
+	jbyte *lparg1=NULL;
+	jint *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1style_1get__J_3B_3IJ_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	gtk_widget_style_get((GtkWidget *)arg0, (const gchar *)lparg1, lparg2, (const gchar *)NULL);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1style_1get__J_3B_3IJ_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1style_1get__J_3B_3JJ
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1widget_1style_1get__J_3B_3JJ)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlongArray arg2, jlong arg3)
+{
+	jbyte *lparg1=NULL;
+	jlong *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1style_1get__J_3B_3JJ_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	gtk_widget_style_get((GtkWidget *)arg0, (const gchar *)lparg1, lparg2, (const gchar *)NULL);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1style_1get__J_3B_3JJ_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1translate_1coordinates
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1widget_1translate_1coordinates)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3, jintArray arg4, jintArray arg5)
+{
+	jint *lparg4=NULL;
+	jint *lparg5=NULL;
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1widget_1translate_1coordinates_FUNC);
+	if (arg4) if ((lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL)) == NULL) goto fail;
+	if (arg5) if ((lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL)) == NULL) goto fail;
+	rc = (jboolean)gtk_widget_translate_coordinates((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (gint *)lparg4, (gint *)lparg5);
+fail:
+	if (arg5 && lparg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	if (arg4 && lparg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1widget_1translate_1coordinates_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1window_1activate_1default
 JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1window_1activate_1default)
 	(JNIEnv *env, jclass that, jlong arg0)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c
index f130728..4516487 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c
@@ -151,7 +151,34 @@
 	"gtk_1toolbar_1set_1show_1arrow",
 	"gtk_1toolbar_1set_1style",
 	"gtk_1viewport_1set_1shadow_1type",
+	"gtk_1widget_1add_1accelerator",
+	"gtk_1widget_1add_1events",
+	"gtk_1widget_1destroy",
+	"gtk_1widget_1draw",
+	"gtk_1widget_1event",
 	"gtk_1widget_1get_1accessible",
+	"gtk_1widget_1get_1can_1default",
+	"gtk_1widget_1get_1events",
+	"gtk_1widget_1get_1has_1window",
+	"gtk_1widget_1get_1preferred_1height",
+	"gtk_1widget_1get_1preferred_1height_1for_1width",
+	"gtk_1widget_1get_1preferred_1width_1for_1height",
+	"gtk_1widget_1get_1screen",
+	"gtk_1widget_1get_1toplevel",
+	"gtk_1widget_1get_1window",
+	"gtk_1widget_1input_1shape_1combine_1region",
+	"gtk_1widget_1override_1font",
+	"gtk_1widget_1remove_1accelerator",
+	"gtk_1widget_1reparent",
+	"gtk_1widget_1set_1can_1default",
+	"gtk_1widget_1set_1double_1buffered",
+	"gtk_1widget_1set_1has_1window",
+	"gtk_1widget_1set_1parent_1window",
+	"gtk_1widget_1set_1redraw_1on_1allocate",
+	"gtk_1widget_1shape_1combine_1region",
+	"gtk_1widget_1style_1get__J_3B_3IJ",
+	"gtk_1widget_1style_1get__J_3B_3JJ",
+	"gtk_1widget_1translate_1coordinates",
 	"gtk_1window_1activate_1default",
 	"gtk_1window_1add_1accel_1group",
 	"gtk_1window_1deiconify",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h
index ef9ad9c..a3aff73 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h
@@ -161,7 +161,34 @@
 	gtk_1toolbar_1set_1show_1arrow_FUNC,
 	gtk_1toolbar_1set_1style_FUNC,
 	gtk_1viewport_1set_1shadow_1type_FUNC,
+	gtk_1widget_1add_1accelerator_FUNC,
+	gtk_1widget_1add_1events_FUNC,
+	gtk_1widget_1destroy_FUNC,
+	gtk_1widget_1draw_FUNC,
+	gtk_1widget_1event_FUNC,
 	gtk_1widget_1get_1accessible_FUNC,
+	gtk_1widget_1get_1can_1default_FUNC,
+	gtk_1widget_1get_1events_FUNC,
+	gtk_1widget_1get_1has_1window_FUNC,
+	gtk_1widget_1get_1preferred_1height_FUNC,
+	gtk_1widget_1get_1preferred_1height_1for_1width_FUNC,
+	gtk_1widget_1get_1preferred_1width_1for_1height_FUNC,
+	gtk_1widget_1get_1screen_FUNC,
+	gtk_1widget_1get_1toplevel_FUNC,
+	gtk_1widget_1get_1window_FUNC,
+	gtk_1widget_1input_1shape_1combine_1region_FUNC,
+	gtk_1widget_1override_1font_FUNC,
+	gtk_1widget_1remove_1accelerator_FUNC,
+	gtk_1widget_1reparent_FUNC,
+	gtk_1widget_1set_1can_1default_FUNC,
+	gtk_1widget_1set_1double_1buffered_FUNC,
+	gtk_1widget_1set_1has_1window_FUNC,
+	gtk_1widget_1set_1parent_1window_FUNC,
+	gtk_1widget_1set_1redraw_1on_1allocate_FUNC,
+	gtk_1widget_1shape_1combine_1region_FUNC,
+	gtk_1widget_1style_1get__J_3B_3IJ_FUNC,
+	gtk_1widget_1style_1get__J_3B_3JJ_FUNC,
+	gtk_1widget_1translate_1coordinates_FUNC,
 	gtk_1window_1activate_1default_FUNC,
 	gtk_1window_1add_1accel_1group_FUNC,
 	gtk_1window_1deiconify_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c
index a998bfb..4af4632 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c
@@ -833,6 +833,212 @@
 }
 #endif
 
+#ifndef NO_gtk_1widget_1action_1set_1enabled
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1action_1set_1enabled)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jboolean arg2)
+{
+	jbyte *lparg1=NULL;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1action_1set_1enabled_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	gtk_widget_action_set_enabled((GtkWidget *)arg0, (const char *)lparg1, arg2);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1action_1set_1enabled_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1activate_1action
+JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1widget_1activate_1action)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jbyteArray arg2)
+{
+	jbyte *lparg1=NULL;
+	jbyte *lparg2=NULL;
+	jboolean rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1activate_1action_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	rc = (jboolean)gtk_widget_activate_action((GtkWidget *)arg0, (const char *)lparg1, (const char *)lparg2);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1activate_1action_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1add_1controller
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1add_1controller)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1add_1controller_FUNC);
+	gtk_widget_add_controller((GtkWidget *)arg0, (GtkEventController *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1add_1controller_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1class_1add_1binding_1signal
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1class_1add_1binding_1signal)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jbyteArray arg3, jbyteArray arg4, jboolean arg5, jboolean arg6, jboolean arg7)
+{
+	jbyte *lparg3=NULL;
+	jbyte *lparg4=NULL;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1class_1add_1binding_1signal_FUNC);
+	if (arg3) if ((lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL)) == NULL) goto fail;
+	if (arg4) if ((lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL)) == NULL) goto fail;
+	gtk_widget_class_add_binding_signal((GtkWidgetClass *)arg0, arg1, (GdkModifierType)arg2, (const char *)lparg3, (const char *)lparg4, arg5, arg6, arg7);
+fail:
+	if (arg4 && lparg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
+	if (arg3 && lparg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1class_1add_1binding_1signal_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1first_1child
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1first_1child)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1first_1child_FUNC);
+	rc = (jlong)gtk_widget_get_first_child((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1first_1child_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1last_1child
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1last_1child)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1last_1child_FUNC);
+	rc = (jlong)gtk_widget_get_last_child((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1last_1child_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1native
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1native)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1native_FUNC);
+	rc = (jlong)gtk_widget_get_native((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1native_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1next_1sibling
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1next_1sibling)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1next_1sibling_FUNC);
+	rc = (jlong)gtk_widget_get_next_sibling((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1next_1sibling_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1prev_1sibling
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1prev_1sibling)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1prev_1sibling_FUNC);
+	rc = (jlong)gtk_widget_get_prev_sibling((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1prev_1sibling_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1receives_1default
+JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1widget_1get_1receives_1default)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1receives_1default_FUNC);
+	rc = (jboolean)gtk_widget_get_receives_default((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1receives_1default_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1get_1root
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1widget_1get_1root)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1get_1root_FUNC);
+	rc = (jlong)gtk_widget_get_root((GtkWidget *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1get_1root_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1widget_1measure
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1measure)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jintArray arg3, jintArray arg4, jintArray arg5, jintArray arg6)
+{
+	jint *lparg3=NULL;
+	jint *lparg4=NULL;
+	jint *lparg5=NULL;
+	jint *lparg6=NULL;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1measure_FUNC);
+	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
+	if (arg4) if ((lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL)) == NULL) goto fail;
+	if (arg5) if ((lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL)) == NULL) goto fail;
+	if (arg6) if ((lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL)) == NULL) goto fail;
+	gtk_widget_measure((GtkWidget *)arg0, (GtkOrientation)arg1, (int)arg2, (int *)lparg3, (int *)lparg4, (int *)lparg5, (int *)lparg6);
+fail:
+	if (arg6 && lparg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
+	if (arg5 && lparg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	if (arg4 && lparg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1measure_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1set_1cursor
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1set_1cursor)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1set_1cursor_FUNC);
+	gtk_widget_set_cursor((GtkWidget *)arg0, (GdkCursor *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1set_1cursor_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1snapshot_1child
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1widget_1snapshot_1child)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1snapshot_1child_FUNC);
+	gtk_widget_snapshot_child((GtkWidget *)arg0, (GtkWidget *)arg1, (GtkSnapshot *)arg2);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1snapshot_1child_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1widget_1translate_1coordinates
+JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1widget_1translate_1coordinates)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jdouble arg2, jdouble arg3, jdoubleArray arg4, jdoubleArray arg5)
+{
+	jdouble *lparg4=NULL;
+	jdouble *lparg5=NULL;
+	jboolean rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1widget_1translate_1coordinates_FUNC);
+	if (arg4) if ((lparg4 = (*env)->GetDoubleArrayElements(env, arg4, NULL)) == NULL) goto fail;
+	if (arg5) if ((lparg5 = (*env)->GetDoubleArrayElements(env, arg5, NULL)) == NULL) goto fail;
+	rc = (jboolean)gtk_widget_translate_coordinates((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (double *)lparg4, (double *)lparg5);
+fail:
+	if (arg5 && lparg5) (*env)->ReleaseDoubleArrayElements(env, arg5, lparg5, 0);
+	if (arg4 && lparg4) (*env)->ReleaseDoubleArrayElements(env, arg4, lparg4, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1widget_1translate_1coordinates_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1window_1destroy
 JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1destroy)
 	(JNIEnv *env, jclass that, jlong arg0)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c
index b74b68d..44a16a3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c
@@ -91,6 +91,21 @@
 	"gtk_1shortcut_1controller_1set_1scope",
 	"gtk_1shortcut_1new",
 	"gtk_1text_1get_1buffer",
+	"gtk_1widget_1action_1set_1enabled",
+	"gtk_1widget_1activate_1action",
+	"gtk_1widget_1add_1controller",
+	"gtk_1widget_1class_1add_1binding_1signal",
+	"gtk_1widget_1get_1first_1child",
+	"gtk_1widget_1get_1last_1child",
+	"gtk_1widget_1get_1native",
+	"gtk_1widget_1get_1next_1sibling",
+	"gtk_1widget_1get_1prev_1sibling",
+	"gtk_1widget_1get_1receives_1default",
+	"gtk_1widget_1get_1root",
+	"gtk_1widget_1measure",
+	"gtk_1widget_1set_1cursor",
+	"gtk_1widget_1snapshot_1child",
+	"gtk_1widget_1translate_1coordinates",
 	"gtk_1window_1destroy",
 	"gtk_1window_1get_1icon_1name",
 	"gtk_1window_1minimize",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.h
index cbee09d..43b6cd9 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.h
@@ -101,6 +101,21 @@
 	gtk_1shortcut_1controller_1set_1scope_FUNC,
 	gtk_1shortcut_1new_FUNC,
 	gtk_1text_1get_1buffer_FUNC,
+	gtk_1widget_1action_1set_1enabled_FUNC,
+	gtk_1widget_1activate_1action_FUNC,
+	gtk_1widget_1add_1controller_FUNC,
+	gtk_1widget_1class_1add_1binding_1signal_FUNC,
+	gtk_1widget_1get_1first_1child_FUNC,
+	gtk_1widget_1get_1last_1child_FUNC,
+	gtk_1widget_1get_1native_FUNC,
+	gtk_1widget_1get_1next_1sibling_FUNC,
+	gtk_1widget_1get_1prev_1sibling_FUNC,
+	gtk_1widget_1get_1receives_1default_FUNC,
+	gtk_1widget_1get_1root_FUNC,
+	gtk_1widget_1measure_FUNC,
+	gtk_1widget_1set_1cursor_FUNC,
+	gtk_1widget_1snapshot_1child_FUNC,
+	gtk_1widget_1translate_1coordinates_FUNC,
 	gtk_1window_1destroy_FUNC,
 	gtk_1window_1get_1icon_1name_FUNC,
 	gtk_1window_1minimize_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index 1b46771..a1a2e63 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
@@ -10089,28 +10089,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1action_1set_1enabled
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1action_1set_1enabled)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jboolean arg2)
-{
-	jbyte *lparg1=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1action_1set_1enabled_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_action_set_enabled((GtkWidget *)arg0, (const char *)lparg1, arg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_action_set_enabled)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, const char *, jboolean))fp)((GtkWidget *)arg0, (const char *)lparg1, arg2);
-		}
-	}
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1action_1set_1enabled_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1activate
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1activate)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10123,65 +10101,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1activate_1action
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1activate_1action)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jbyteArray arg2)
-{
-	jbyte *lparg1=NULL;
-	jbyte *lparg2=NULL;
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1activate_1action_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	if (arg2) if ((lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL)) == NULL) goto fail;
-/*
-	rc = (jboolean)gtk_widget_activate_action((GtkWidget *)arg0, (const char *)lparg1, (const char *)lparg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_activate_action)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *, const char *, const char *))fp)((GtkWidget *)arg0, (const char *)lparg1, (const char *)lparg2);
-		}
-	}
-fail:
-	if (arg2 && lparg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1activate_1action_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1add_1accelerator
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1add_1accelerator)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jint arg3, jint arg4, jint arg5)
-{
-	jbyte *lparg1=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1add_1accelerator_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	gtk_widget_add_accelerator((GtkWidget *)arg0, (const gchar *)lparg1, (GtkAccelGroup *)arg2, (guint)arg3, (GdkModifierType)arg4, arg5);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1add_1accelerator_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1add_1controller
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1add_1controller)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1add_1controller_FUNC);
-/*
-	gtk_widget_add_controller((GtkWidget *)arg0, (GtkEventController *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_add_controller)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, GtkEventController *))fp)((GtkWidget *)arg0, (GtkEventController *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1add_1controller_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1add_1css_1class
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1add_1css_1class)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
@@ -10204,24 +10123,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1add_1events
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1add_1events)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1add_1events_FUNC);
-/*
-	gtk_widget_add_events((GtkWidget *)arg0, (gint)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_add_events)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gint))fp)((GtkWidget *)arg0, (gint)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1add_1events_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1child_1focus
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1child_1focus)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
@@ -10234,31 +10135,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1class_1add_1binding_1signal
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1class_1add_1binding_1signal)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jbyteArray arg3, jbyteArray arg4, jboolean arg5, jboolean arg6, jboolean arg7)
-{
-	jbyte *lparg3=NULL;
-	jbyte *lparg4=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1class_1add_1binding_1signal_FUNC);
-	if (arg3) if ((lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL)) == NULL) goto fail;
-	if (arg4) if ((lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_class_add_binding_signal((GtkWidgetClass *)arg0, arg1, (GdkModifierType)arg2, (const char *)lparg3, (const char *)lparg4, arg5, arg6, arg7);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_class_add_binding_signal)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidgetClass *, jint, GdkModifierType, const char *, const char *, jboolean, jboolean, jboolean))fp)((GtkWidgetClass *)arg0, arg1, (GdkModifierType)arg2, (const char *)lparg3, (const char *)lparg4, arg5, arg6, arg7);
-		}
-	}
-fail:
-	if (arg4 && lparg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
-	if (arg3 && lparg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1class_1add_1binding_1signal_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1class_1get_1css_1name
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1class_1get_1css_1name)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10307,62 +10183,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1destroy
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1destroy)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1destroy_FUNC);
-/*
-	gtk_widget_destroy((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_destroy)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1destroy_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1draw
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1draw)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1draw_FUNC);
-/*
-	gtk_widget_draw((GtkWidget *)arg0, (cairo_t *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_draw)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, cairo_t *))fp)((GtkWidget *)arg0, (cairo_t *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1draw_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1event
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1event)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1event_FUNC);
-/*
-	rc = (jboolean)gtk_widget_event((GtkWidget *)arg0, (GdkEvent *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_event)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *, GdkEvent *))fp)((GtkWidget *)arg0, (GdkEvent *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1event_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1allocation
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1get_1allocation)
 	(JNIEnv *env, jclass that, jlong arg0, jobject arg1)
@@ -10377,26 +10197,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1can_1default
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1can_1default)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1can_1default_FUNC);
-/*
-	rc = (jboolean)gtk_widget_get_can_default((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_can_default)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1can_1default_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1child_1visible
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1child_1visible)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10431,86 +10231,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1events
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1widget_1get_1events)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1events_FUNC);
-/*
-	rc = (jint)gtk_widget_get_events((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_events)
-		if (fp) {
-			rc = (jint)((jint (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1events_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1first_1child
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1first_1child)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1first_1child_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_first_child((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_first_child)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1first_1child_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1has_1window
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1has_1window)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1has_1window_FUNC);
-/*
-	rc = (jboolean)gtk_widget_get_has_window((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_has_window)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1has_1window_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1last_1child
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1last_1child)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1last_1child_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_last_child((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_last_child)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1last_1child_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1mapped
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1mapped)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10615,46 +10335,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1native
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1native)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1native_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_native((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_native)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1native_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1next_1sibling
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1next_1sibling)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1next_1sibling_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_next_sibling((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_next_sibling)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1next_1sibling_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1opacity
 JNIEXPORT jdouble JNICALL GTK_NATIVE(gtk_1widget_1get_1opacity)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10739,56 +10419,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1preferred_1height
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1get_1preferred_1height)
-	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
-{
-	jint *lparg1=NULL;
-	jint *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1height_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_get_preferred_height((GtkWidget *)arg0, (gint *)lparg1, (gint *)lparg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_preferred_height)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gint *, gint *))fp)((GtkWidget *)arg0, (gint *)lparg1, (gint *)lparg2);
-		}
-	}
-fail:
-	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
-	if (arg1 && lparg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1height_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1preferred_1height_1for_1width
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1get_1preferred_1height_1for_1width)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jintArray arg2, jintArray arg3)
-{
-	jint *lparg2=NULL;
-	jint *lparg3=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1height_1for_1width_FUNC);
-	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
-	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_get_preferred_height_for_width((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_preferred_height_for_width)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gint, gint *, gint *))fp)((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
-		}
-	}
-fail:
-	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
-	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1height_1for_1width_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1preferred_1size
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1get_1preferred_1size)
 	(JNIEnv *env, jclass that, jlong arg0, jobject arg1, jobject arg2)
@@ -10806,51 +10436,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1preferred_1width_1for_1height
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1get_1preferred_1width_1for_1height)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jintArray arg2, jintArray arg3)
-{
-	jint *lparg2=NULL;
-	jint *lparg3=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1preferred_1width_1for_1height_FUNC);
-	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
-	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_get_preferred_width_for_height((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_preferred_width_for_height)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gint, gint *, gint *))fp)((GtkWidget *)arg0, (gint)arg1, (gint *)lparg2, (gint *)lparg3);
-		}
-	}
-fail:
-	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
-	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1preferred_1width_1for_1height_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1prev_1sibling
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1prev_1sibling)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1prev_1sibling_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_prev_sibling((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_prev_sibling)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1prev_1sibling_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1realized
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1realized)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10863,46 +10448,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1receives_1default
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1receives_1default)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1receives_1default_FUNC);
-/*
-	rc = (jboolean)gtk_widget_get_receives_default((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_receives_default)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1receives_1default_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1get_1root
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1root)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1root_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_root((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_root)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1root_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1scale_1factor
 JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1widget_1get_1scale_1factor)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -10915,26 +10460,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1screen
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1screen)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1screen_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_screen((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_screen)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1screen_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1sensitive
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1sensitive)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -11000,26 +10525,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1toplevel
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1toplevel)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1toplevel_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_toplevel((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_toplevel)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1toplevel_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1get_1visible
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1get_1visible)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -11032,26 +10537,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1get_1window
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1widget_1get_1window)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1get_1window_FUNC);
-/*
-	rc = (jlong)gtk_widget_get_window((GtkWidget *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_get_window)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkWidget *))fp)((GtkWidget *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1get_1window_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1grab_1focus
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1grab_1focus)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -11096,24 +10581,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1input_1shape_1combine_1region
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1input_1shape_1combine_1region)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1input_1shape_1combine_1region_FUNC);
-/*
-	gtk_widget_input_shape_combine_region((GtkWidget *)arg0, (cairo_region_t *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_input_shape_combine_region)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, cairo_region_t *))fp)((GtkWidget *)arg0, (cairo_region_t *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1input_1shape_1combine_1region_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1insert_1action_1group
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1insert_1action_1group)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2)
@@ -11140,37 +10607,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1measure
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1measure)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jintArray arg3, jintArray arg4, jintArray arg5, jintArray arg6)
-{
-	jint *lparg3=NULL;
-	jint *lparg4=NULL;
-	jint *lparg5=NULL;
-	jint *lparg6=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1measure_FUNC);
-	if (arg3) if ((lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL)) == NULL) goto fail;
-	if (arg4) if ((lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL)) == NULL) goto fail;
-	if (arg5) if ((lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL)) == NULL) goto fail;
-	if (arg6) if ((lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL)) == NULL) goto fail;
-/*
-	gtk_widget_measure((GtkWidget *)arg0, (GtkOrientation)arg1, (int)arg2, (int *)lparg3, (int *)lparg4, (int *)lparg5, (int *)lparg6);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_measure)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, GtkOrientation, int, int *, int *, int *, int *))fp)((GtkWidget *)arg0, (GtkOrientation)arg1, (int)arg2, (int *)lparg3, (int *)lparg4, (int *)lparg5, (int *)lparg6);
-		}
-	}
-fail:
-	if (arg6 && lparg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
-	if (arg5 && lparg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
-	if (arg4 && lparg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
-	if (arg3 && lparg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1measure_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1mnemonic_1activate
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1mnemonic_1activate)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11183,24 +10619,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1override_1font
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1override_1font)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1override_1font_FUNC);
-/*
-	gtk_widget_override_font(arg0, arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_override_font)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(jlong, jlong))fp)(arg0, arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1override_1font_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1queue_1draw
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1queue_1draw)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -11231,34 +10649,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1remove_1accelerator
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1remove_1accelerator)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1remove_1accelerator_FUNC);
-	gtk_widget_remove_accelerator((GtkWidget *)arg0, (GtkAccelGroup *)arg1, (guint)arg2, (GdkModifierType)arg3);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1remove_1accelerator_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1reparent
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1reparent)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1reparent_FUNC);
-/*
-	gtk_widget_reparent((GtkWidget *)arg0, (GtkWidget *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_reparent)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, GtkWidget *))fp)((GtkWidget *)arg0, (GtkWidget *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1reparent_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1allocation
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1allocation)
 	(JNIEnv *env, jclass that, jlong arg0, jobject arg1)
@@ -11280,24 +10670,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1can_1default
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1can_1default)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1can_1default_FUNC);
-/*
-	gtk_widget_set_can_default((GtkWidget *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_can_default)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gboolean))fp)((GtkWidget *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1can_1default_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1can_1focus
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1can_1focus)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11330,24 +10702,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1cursor
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1cursor)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1cursor_FUNC);
-/*
-	gtk_widget_set_cursor((GtkWidget *)arg0, (GdkCursor *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_cursor)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, GdkCursor *))fp)((GtkWidget *)arg0, (GdkCursor *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1cursor_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1default_1direction
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1default_1direction)
 	(JNIEnv *env, jclass that, jint arg0)
@@ -11368,24 +10722,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1double_1buffered
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1double_1buffered)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1double_1buffered_FUNC);
-/*
-	gtk_widget_set_double_buffered((GtkWidget *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_double_buffered)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gboolean))fp)((GtkWidget *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1double_1buffered_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1focus_1on_1click
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1focus_1on_1click)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11414,24 +10750,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1has_1window
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1has_1window)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1has_1window_FUNC);
-/*
-	gtk_widget_set_has_window((GtkWidget *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_has_window)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gboolean))fp)((GtkWidget *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1has_1window_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1hexpand
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1hexpand)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11550,24 +10868,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1parent_1window
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1parent_1window)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1parent_1window_FUNC);
-/*
-	gtk_widget_set_parent_window((GtkWidget *)arg0, (GdkWindow *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_parent_window)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, GdkWindow *))fp)((GtkWidget *)arg0, (GdkWindow *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1parent_1window_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1receives_1default
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1receives_1default)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11578,24 +10878,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1set_1redraw_1on_1allocate
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1redraw_1on_1allocate)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1set_1redraw_1on_1allocate_FUNC);
-/*
-	gtk_widget_set_redraw_on_allocate((GtkWidget *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_set_redraw_on_allocate)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, gboolean))fp)((GtkWidget *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1set_1redraw_1on_1allocate_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1set_1sensitive
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1set_1sensitive)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -11660,24 +10942,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1shape_1combine_1region
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1shape_1combine_1region)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1shape_1combine_1region_FUNC);
-/*
-	gtk_widget_shape_combine_region((GtkWidget *)arg0, (cairo_region_t *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_shape_combine_region)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWidget *, cairo_region_t *))fp)((GtkWidget *)arg0, (cairo_region_t *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1shape_1combine_1region_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1show
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1show)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -11730,104 +10994,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1widget_1snapshot_1child
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1snapshot_1child)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1snapshot_1child_FUNC);
-	gtk_widget_snapshot_child((GtkWidget *)arg0, (GtkWidget *)arg1, (GtkSnapshot *)arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1snapshot_1child_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1style_1get__J_3B_3IJ
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1style_1get__J_3B_3IJ)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jintArray arg2, jlong arg3)
-{
-	jbyte *lparg1=NULL;
-	jint *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1style_1get__J_3B_3IJ_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
-	gtk_widget_style_get((GtkWidget *)arg0, (const gchar *)lparg1, lparg2, (const gchar *)NULL);
-fail:
-	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1style_1get__J_3B_3IJ_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1style_1get__J_3B_3JJ
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1style_1get__J_3B_3JJ)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlongArray arg2, jlong arg3)
-{
-	jbyte *lparg1=NULL;
-	jlong *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1style_1get__J_3B_3JJ_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
-	gtk_widget_style_get((GtkWidget *)arg0, (const gchar *)lparg1, lparg2, (const gchar *)NULL);
-fail:
-	if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1style_1get__J_3B_3JJ_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1widget_1translate_1coordinates__JJDD_3D_3D
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1translate_1coordinates__JJDD_3D_3D)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jdouble arg2, jdouble arg3, jdoubleArray arg4, jdoubleArray arg5)
-{
-	jdouble *lparg4=NULL;
-	jdouble *lparg5=NULL;
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1translate_1coordinates__JJDD_3D_3D_FUNC);
-	if (arg4) if ((lparg4 = (*env)->GetDoubleArrayElements(env, arg4, NULL)) == NULL) goto fail;
-	if (arg5) if ((lparg5 = (*env)->GetDoubleArrayElements(env, arg5, NULL)) == NULL) goto fail;
-/*
-	rc = (jboolean)gtk_widget_translate_coordinates((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (double *)lparg4, (double *)lparg5);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_translate_coordinates)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *, GtkWidget *, jdouble, jdouble, double *, double *))fp)((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (double *)lparg4, (double *)lparg5);
-		}
-	}
-fail:
-	if (arg5 && lparg5) (*env)->ReleaseDoubleArrayElements(env, arg5, lparg5, 0);
-	if (arg4 && lparg4) (*env)->ReleaseDoubleArrayElements(env, arg4, lparg4, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1translate_1coordinates__JJDD_3D_3D_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1widget_1translate_1coordinates__JJII_3I_3I
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1widget_1translate_1coordinates__JJII_3I_3I)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3, jintArray arg4, jintArray arg5)
-{
-	jint *lparg4=NULL;
-	jint *lparg5=NULL;
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1widget_1translate_1coordinates__JJII_3I_3I_FUNC);
-	if (arg4) if ((lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL)) == NULL) goto fail;
-	if (arg5) if ((lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL)) == NULL) goto fail;
-/*
-	rc = (jboolean)gtk_widget_translate_coordinates((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (gint *)lparg4, (gint *)lparg5);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_widget_translate_coordinates)
-		if (fp) {
-			rc = (jboolean)((jboolean (CALLING_CONVENTION*)(GtkWidget *, GtkWidget *, jint, jint, gint *, gint *))fp)((GtkWidget *)arg0, (GtkWidget *)arg1, arg2, arg3, (gint *)lparg4, (gint *)lparg5);
-		}
-	}
-fail:
-	if (arg5 && lparg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
-	if (arg4 && lparg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1widget_1translate_1coordinates__JJII_3I_3I_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1widget_1unparent
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1unparent)
 	(JNIEnv *env, jclass that, jlong arg0)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
index 362e74a..7f62a44 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
@@ -251,22 +251,15 @@
 #define NO_gdk_1selection_1owner_1set
 #define NO_gdk_1selection_1owner_1get
 #define NO_gdk_1visual_1get_1depth
-#define NO_gtk_1widget_1style_1get__I_3B_3II
-#define NO_gtk_1widget_1style_1get__J_3B_3IJ
-#define NO_gtk_1widget_1style_1get__I_3B_3JI
-#define NO_gtk_1widget_1style_1get__J_3B_3JJ
 #define NO_gtk_1css_1provider_1load_1from_1data__I_3BI_3I
 #define NO_gtk_1css_1provider_1load_1from_1data__J_3BJ_3J
 #define NO_gdk_1pixbuf_1get_1from_1window
-#define NO_gtk_1widget_1destroy
 
 // Some sizing functions are not available on GTK4
 #define NO_gtk_1window_1set_1geometry_1hints
 
 // No GdkWindow on GTK4, this includes parameter casting
-#define NO_gtk_1widget_1set_1has_1window
 #define NO_gtk_1im_1context_1set_1client_1window
-#define NO_gtk_1widget_1set_1parent_1window
 #define NO_gdk_1cairo_1set_1source_1window
 #define NO_gdk_1device_1grab
 #define NO_gdk_1device_1warp
@@ -357,10 +350,6 @@
 // GtkTreeViewColumn changes
 #define NO_gtk_1tree_1view_1column_1cell_1get_1size__JLorg_eclipse_swt_internal_gtk_GdkRectangle_2_3I_3I_3I_3I
 
-// GtkAccelGroup removed
-#define NO_gtk_1widget_1add_1accelerator
-#define NO_gtk_1widget_1remove_1accelerator
-
 // Accessibility interface changes
 #define NO_GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE
 #define NO_swt_1fixed_1accessible_1register_1accessible
@@ -378,7 +367,6 @@
 #else
 
 // No GdkSurface on GTK3
-#define NO_gtk_1widget_1set_1parent_1surface
 #define NO_gdk_1surface_1create_1similar_1surface
 #define NO_gdk_1surface_1destroy
 #define NO_gdk_1surface_1get_1origin
@@ -405,7 +393,6 @@
 
 // No GtkSnapshot on GTK3
 #define NO_gtk_1snapshot_1append_1cairo
-#define NO_gtk_1widget_1snapshot_1child
 
 // No Graphene library on GTK3
 #define NO_graphene_1rect_1alloc
@@ -413,7 +400,6 @@
 #define NO_graphene_1rect_1init
 
 // Miscellaneous functions not present on GTK3
-#define NO_gtk_1widget_1measure
 #define NO_gtk_1style_1context_1add_1provider_1for_1display
 #define NO_gtk_1css_1provider_1load_1from_1data__I_3BI
 #define NO_gtk_1css_1provider_1load_1from_1data__J_3BJ
@@ -423,7 +409,6 @@
 #define NO_gdk_1cursor_1new_1from_1name___3BI
 #define NO_gdk_1cursor_1new_1from_1name___3BJ
 #define NO_gdk_1cursor_1new_1from_1texture
-#define NO_gtk_1widget_1set_1cursor
 
 // No GdkTexture on GTK3
 #define NO_gdk_1texture_1new_1for_1pixbuf
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index 5f9b2b8..9f88877 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
@@ -794,86 +794,52 @@
 	"gtk_1tree_1view_1set_1headers_1visible",
 	"gtk_1tree_1view_1set_1model",
 	"gtk_1tree_1view_1set_1search_1column",
-	"gtk_1widget_1action_1set_1enabled",
 	"gtk_1widget_1activate",
-	"gtk_1widget_1activate_1action",
-	"gtk_1widget_1add_1accelerator",
-	"gtk_1widget_1add_1controller",
 	"gtk_1widget_1add_1css_1class",
-	"gtk_1widget_1add_1events",
 	"gtk_1widget_1child_1focus",
-	"gtk_1widget_1class_1add_1binding_1signal",
 	"gtk_1widget_1class_1get_1css_1name",
 	"gtk_1widget_1create_1pango_1layout__JJ",
 	"gtk_1widget_1create_1pango_1layout__J_3B",
-	"gtk_1widget_1destroy",
-	"gtk_1widget_1draw",
-	"gtk_1widget_1event",
 	"gtk_1widget_1get_1allocation",
-	"gtk_1widget_1get_1can_1default",
 	"gtk_1widget_1get_1child_1visible",
 	"gtk_1widget_1get_1clip",
-	"gtk_1widget_1get_1events",
-	"gtk_1widget_1get_1first_1child",
-	"gtk_1widget_1get_1has_1window",
-	"gtk_1widget_1get_1last_1child",
 	"gtk_1widget_1get_1mapped",
 	"gtk_1widget_1get_1margin_1bottom",
 	"gtk_1widget_1get_1margin_1end",
 	"gtk_1widget_1get_1margin_1start",
 	"gtk_1widget_1get_1margin_1top",
 	"gtk_1widget_1get_1name",
-	"gtk_1widget_1get_1native",
-	"gtk_1widget_1get_1next_1sibling",
 	"gtk_1widget_1get_1opacity",
 	"gtk_1widget_1get_1pango_1context",
 	"gtk_1widget_1get_1parent",
 	"gtk_1widget_1get_1parent_1surface",
 	"gtk_1widget_1get_1parent_1window",
-	"gtk_1widget_1get_1preferred_1height",
-	"gtk_1widget_1get_1preferred_1height_1for_1width",
 	"gtk_1widget_1get_1preferred_1size",
-	"gtk_1widget_1get_1preferred_1width_1for_1height",
-	"gtk_1widget_1get_1prev_1sibling",
 	"gtk_1widget_1get_1realized",
-	"gtk_1widget_1get_1receives_1default",
-	"gtk_1widget_1get_1root",
 	"gtk_1widget_1get_1scale_1factor",
-	"gtk_1widget_1get_1screen",
 	"gtk_1widget_1get_1sensitive",
 	"gtk_1widget_1get_1size_1request",
 	"gtk_1widget_1get_1state_1flags",
 	"gtk_1widget_1get_1style_1context",
 	"gtk_1widget_1get_1tooltip_1text",
-	"gtk_1widget_1get_1toplevel",
 	"gtk_1widget_1get_1visible",
-	"gtk_1widget_1get_1window",
 	"gtk_1widget_1grab_1focus",
 	"gtk_1widget_1has_1default",
 	"gtk_1widget_1has_1focus",
 	"gtk_1widget_1hide",
-	"gtk_1widget_1input_1shape_1combine_1region",
 	"gtk_1widget_1insert_1action_1group",
 	"gtk_1widget_1is_1focus",
-	"gtk_1widget_1measure",
 	"gtk_1widget_1mnemonic_1activate",
-	"gtk_1widget_1override_1font",
 	"gtk_1widget_1queue_1draw",
 	"gtk_1widget_1queue_1resize",
 	"gtk_1widget_1realize",
-	"gtk_1widget_1remove_1accelerator",
-	"gtk_1widget_1reparent",
 	"gtk_1widget_1set_1allocation",
-	"gtk_1widget_1set_1can_1default",
 	"gtk_1widget_1set_1can_1focus",
 	"gtk_1widget_1set_1clip",
-	"gtk_1widget_1set_1cursor",
 	"gtk_1widget_1set_1default_1direction",
 	"gtk_1widget_1set_1direction",
-	"gtk_1widget_1set_1double_1buffered",
 	"gtk_1widget_1set_1focus_1on_1click",
 	"gtk_1widget_1set_1halign",
-	"gtk_1widget_1set_1has_1window",
 	"gtk_1widget_1set_1hexpand",
 	"gtk_1widget_1set_1margin_1bottom",
 	"gtk_1widget_1set_1margin_1end",
@@ -881,24 +847,16 @@
 	"gtk_1widget_1set_1margin_1top",
 	"gtk_1widget_1set_1opacity",
 	"gtk_1widget_1set_1parent",
-	"gtk_1widget_1set_1parent_1window",
 	"gtk_1widget_1set_1receives_1default",
-	"gtk_1widget_1set_1redraw_1on_1allocate",
 	"gtk_1widget_1set_1sensitive",
 	"gtk_1widget_1set_1size_1request",
 	"gtk_1widget_1set_1tooltip_1text",
 	"gtk_1widget_1set_1valign",
 	"gtk_1widget_1set_1vexpand",
 	"gtk_1widget_1set_1visible",
-	"gtk_1widget_1shape_1combine_1region",
 	"gtk_1widget_1show",
 	"gtk_1widget_1size_1allocate__JLorg_eclipse_swt_internal_gtk_GtkAllocation_2",
 	"gtk_1widget_1size_1allocate__JLorg_eclipse_swt_internal_gtk_GtkAllocation_2I",
-	"gtk_1widget_1snapshot_1child",
-	"gtk_1widget_1style_1get__J_3B_3IJ",
-	"gtk_1widget_1style_1get__J_3B_3JJ",
-	"gtk_1widget_1translate_1coordinates__JJDD_3D_3D",
-	"gtk_1widget_1translate_1coordinates__JJII_3I_3I",
 	"gtk_1widget_1unparent",
 	"gtk_1window_1fullscreen",
 	"gtk_1window_1get_1default_1size",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index fe85597..74743eb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
@@ -792,86 +792,52 @@
 	gtk_1tree_1view_1set_1headers_1visible_FUNC,
 	gtk_1tree_1view_1set_1model_FUNC,
 	gtk_1tree_1view_1set_1search_1column_FUNC,
-	gtk_1widget_1action_1set_1enabled_FUNC,
 	gtk_1widget_1activate_FUNC,
-	gtk_1widget_1activate_1action_FUNC,
-	gtk_1widget_1add_1accelerator_FUNC,
-	gtk_1widget_1add_1controller_FUNC,
 	gtk_1widget_1add_1css_1class_FUNC,
-	gtk_1widget_1add_1events_FUNC,
 	gtk_1widget_1child_1focus_FUNC,
-	gtk_1widget_1class_1add_1binding_1signal_FUNC,
 	gtk_1widget_1class_1get_1css_1name_FUNC,
 	gtk_1widget_1create_1pango_1layout__JJ_FUNC,
 	gtk_1widget_1create_1pango_1layout__J_3B_FUNC,
-	gtk_1widget_1destroy_FUNC,
-	gtk_1widget_1draw_FUNC,
-	gtk_1widget_1event_FUNC,
 	gtk_1widget_1get_1allocation_FUNC,
-	gtk_1widget_1get_1can_1default_FUNC,
 	gtk_1widget_1get_1child_1visible_FUNC,
 	gtk_1widget_1get_1clip_FUNC,
-	gtk_1widget_1get_1events_FUNC,
-	gtk_1widget_1get_1first_1child_FUNC,
-	gtk_1widget_1get_1has_1window_FUNC,
-	gtk_1widget_1get_1last_1child_FUNC,
 	gtk_1widget_1get_1mapped_FUNC,
 	gtk_1widget_1get_1margin_1bottom_FUNC,
 	gtk_1widget_1get_1margin_1end_FUNC,
 	gtk_1widget_1get_1margin_1start_FUNC,
 	gtk_1widget_1get_1margin_1top_FUNC,
 	gtk_1widget_1get_1name_FUNC,
-	gtk_1widget_1get_1native_FUNC,
-	gtk_1widget_1get_1next_1sibling_FUNC,
 	gtk_1widget_1get_1opacity_FUNC,
 	gtk_1widget_1get_1pango_1context_FUNC,
 	gtk_1widget_1get_1parent_FUNC,
 	gtk_1widget_1get_1parent_1surface_FUNC,
 	gtk_1widget_1get_1parent_1window_FUNC,
-	gtk_1widget_1get_1preferred_1height_FUNC,
-	gtk_1widget_1get_1preferred_1height_1for_1width_FUNC,
 	gtk_1widget_1get_1preferred_1size_FUNC,
-	gtk_1widget_1get_1preferred_1width_1for_1height_FUNC,
-	gtk_1widget_1get_1prev_1sibling_FUNC,
 	gtk_1widget_1get_1realized_FUNC,
-	gtk_1widget_1get_1receives_1default_FUNC,
-	gtk_1widget_1get_1root_FUNC,
 	gtk_1widget_1get_1scale_1factor_FUNC,
-	gtk_1widget_1get_1screen_FUNC,
 	gtk_1widget_1get_1sensitive_FUNC,
 	gtk_1widget_1get_1size_1request_FUNC,
 	gtk_1widget_1get_1state_1flags_FUNC,
 	gtk_1widget_1get_1style_1context_FUNC,
 	gtk_1widget_1get_1tooltip_1text_FUNC,
-	gtk_1widget_1get_1toplevel_FUNC,
 	gtk_1widget_1get_1visible_FUNC,
-	gtk_1widget_1get_1window_FUNC,
 	gtk_1widget_1grab_1focus_FUNC,
 	gtk_1widget_1has_1default_FUNC,
 	gtk_1widget_1has_1focus_FUNC,
 	gtk_1widget_1hide_FUNC,
-	gtk_1widget_1input_1shape_1combine_1region_FUNC,
 	gtk_1widget_1insert_1action_1group_FUNC,
 	gtk_1widget_1is_1focus_FUNC,
-	gtk_1widget_1measure_FUNC,
 	gtk_1widget_1mnemonic_1activate_FUNC,
-	gtk_1widget_1override_1font_FUNC,
 	gtk_1widget_1queue_1draw_FUNC,
 	gtk_1widget_1queue_1resize_FUNC,
 	gtk_1widget_1realize_FUNC,
-	gtk_1widget_1remove_1accelerator_FUNC,
-	gtk_1widget_1reparent_FUNC,
 	gtk_1widget_1set_1allocation_FUNC,
-	gtk_1widget_1set_1can_1default_FUNC,
 	gtk_1widget_1set_1can_1focus_FUNC,
 	gtk_1widget_1set_1clip_FUNC,
-	gtk_1widget_1set_1cursor_FUNC,
 	gtk_1widget_1set_1default_1direction_FUNC,
 	gtk_1widget_1set_1direction_FUNC,
-	gtk_1widget_1set_1double_1buffered_FUNC,
 	gtk_1widget_1set_1focus_1on_1click_FUNC,
 	gtk_1widget_1set_1halign_FUNC,
-	gtk_1widget_1set_1has_1window_FUNC,
 	gtk_1widget_1set_1hexpand_FUNC,
 	gtk_1widget_1set_1margin_1bottom_FUNC,
 	gtk_1widget_1set_1margin_1end_FUNC,
@@ -879,24 +845,16 @@
 	gtk_1widget_1set_1margin_1top_FUNC,
 	gtk_1widget_1set_1opacity_FUNC,
 	gtk_1widget_1set_1parent_FUNC,
-	gtk_1widget_1set_1parent_1window_FUNC,
 	gtk_1widget_1set_1receives_1default_FUNC,
-	gtk_1widget_1set_1redraw_1on_1allocate_FUNC,
 	gtk_1widget_1set_1sensitive_FUNC,
 	gtk_1widget_1set_1size_1request_FUNC,
 	gtk_1widget_1set_1tooltip_1text_FUNC,
 	gtk_1widget_1set_1valign_FUNC,
 	gtk_1widget_1set_1vexpand_FUNC,
 	gtk_1widget_1set_1visible_FUNC,
-	gtk_1widget_1shape_1combine_1region_FUNC,
 	gtk_1widget_1show_FUNC,
 	gtk_1widget_1size_1allocate__JLorg_eclipse_swt_internal_gtk_GtkAllocation_2_FUNC,
 	gtk_1widget_1size_1allocate__JLorg_eclipse_swt_internal_gtk_GtkAllocation_2I_FUNC,
-	gtk_1widget_1snapshot_1child_FUNC,
-	gtk_1widget_1style_1get__J_3B_3IJ_FUNC,
-	gtk_1widget_1style_1get__J_3B_3JJ_FUNC,
-	gtk_1widget_1translate_1coordinates__JJDD_3D_3D_FUNC,
-	gtk_1widget_1translate_1coordinates__JJII_3I_3I_FUNC,
 	gtk_1widget_1unparent_FUNC,
 	gtk_1window_1fullscreen_FUNC,
 	gtk_1window_1get_1default_1size_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
index 7a245fa..200b5b3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
@@ -2643,13 +2643,6 @@
 	public static final native boolean gtk_widget_has_focus(long widget);
 	/** @param widget cast=(GtkWidget *) */
 	public static final native void gtk_widget_hide(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param region cast=(cairo_region_t *)
-	 */
-	/* [GTK3 only] */
-	public static final native void gtk_widget_input_shape_combine_region(long widget, long region);
 	/** @param widget cast=(GtkWidget *) */
 	public static final native boolean gtk_widget_is_focus(long widget);
 	/** @param widget cast=(GtkWidget *) */
@@ -2726,51 +2719,6 @@
 	public static final native void gtk_widget_insert_action_group(long widget, byte[] name, long group);
 
 	/* GtkWidget [GTK3 only] */
-	/** @method flags=dynamic */
-	/* [GTK3; 3.16 deprecated] */
-	public static final native void gtk_widget_override_font(long widget, long font);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param new_parent cast=(GtkWidget *)
-	 */
-	/* deprecated as of 3.14 */
-	public static final native void gtk_widget_reparent(long widget, long new_parent);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param double_buffered cast=(gboolean)
-	 */
-	/* [GTK3 only; 3.14 deprecated] */
-	public static final native void gtk_widget_set_double_buffered(long widget, boolean double_buffered);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param width cast=(gint)
-	 * @param minimum_size cast=(gint *)
-	 * @param natural_size cast=(gint *)
-	 */
-	public static final native void gtk_widget_get_preferred_height_for_width(long widget, int width, int[] minimum_size, int[] natural_size);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param minimum_size cast=(gint *)
-	 * @param natural_size cast=(gint *)
-	 */
-	public static final native void gtk_widget_get_preferred_height(long widget, int[] minimum_size, int[] natural_size);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param height cast=(gint)
-	 * @param minimum_size cast=(gint *)
-	 * @param natural_size cast=(gint *)
-	 */
-	public static final native void gtk_widget_get_preferred_width_for_height(long widget, int height, int[] minimum_size, int[] natural_size);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native long gtk_widget_get_screen(long widget);
 	/**
 	 * @method flags=dynamic
 	 * @param widget cast=(GtkWidget *)
@@ -2784,59 +2732,6 @@
 	/**
 	 * @method flags=dynamic
 	 * @param widget cast=(GtkWidget *)
-	 * @param has_window cast=(gboolean)
-	 */
-	public static final native void gtk_widget_set_has_window(long widget, boolean has_window);
-	/**
-	 * @param widget cast=(GtkWidget *)
-	 * @param accel_signal cast=(const gchar *)
-	 * @param accel_group cast=(GtkAccelGroup *)
-	 * @param accel_key cast=(guint)
-	 * @param accel_mods cast=(GdkModifierType)
-	 */
-	public static final native void gtk_widget_add_accelerator(long widget, byte[] accel_signal, long accel_group, int accel_key, int accel_mods, int accel_flags);
-	/**
-	 * @param widget cast=(GtkWidget *)
-	 * @param accel_group cast=(GtkAccelGroup *)
-	 * @param accel_key cast=(guint)
-	 * @param accel_mods cast=(GdkModifierType)
-	 */
-	public static final native void gtk_widget_remove_accelerator(long widget, long accel_group, int accel_key, int accel_mods);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param events cast=(gint)
-	 */
-	public static final native void gtk_widget_add_events(long widget, int events);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_widget_destroy(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native int gtk_widget_get_events(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native long gtk_widget_get_window(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native long gtk_widget_get_toplevel(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param redraw cast=(gboolean)
-	 */
-	public static final native void gtk_widget_set_redraw_on_allocate(long widget, boolean redraw);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
 	 * @param allocation cast=(GtkAllocation *),flags=no_out
 	 */
 	public static final native void gtk_widget_set_allocation(long widget, GtkAllocation allocation);
@@ -2846,168 +2741,14 @@
 	 * @param allocation cast=(GtkAllocation *),flags=no_out
 	 */
 	public static final native void gtk_widget_size_allocate(long widget, GtkAllocation allocation);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param event cast=(GdkEvent *)
-	 */
-	public static final native boolean gtk_widget_event(long widget, long event);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param cr cast=(cairo_t *)
-	 */
-	public static final native void gtk_widget_draw(long widget, long cr);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native boolean gtk_widget_get_has_window(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native boolean gtk_widget_get_can_default(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param can_default cast=(gboolean)
-	 */
-	public static final native void gtk_widget_set_can_default(long widget, boolean can_default);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param parent_window cast=(GdkWindow *)
-	 */
-	public static final native void gtk_widget_set_parent_window(long widget, long parent_window);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param region cast=(cairo_region_t *)
-	 */
-	public static final native void gtk_widget_shape_combine_region(long widget, long region);
-	/**
-	 * @method flags=dynamic
-	 * @param src_widget cast=(GtkWidget *)
-	 * @param dest_widget cast=(GtkWidget *)
-	 * @param dest_x cast=(gint *)
-	 * @param dest_y cast=(gint *)
-	 */
-	public static final native boolean gtk_widget_translate_coordinates(long src_widget, long dest_widget, int src_x, int src_y, int[] dest_x, int[] dest_y);
-	/**
-	 * @param widget cast=(GtkWidget *)
-	 * @param property_name cast=(const gchar *)
-	 * @param terminator cast=(const gchar *),flags=sentinel
-	 */
-	public static final native void gtk_widget_style_get(long widget, byte[] property_name, int[] value, long terminator);
-	/**
-	 * @param widget cast=(GtkWidget *)
-	 * @param property_name cast=(const gchar *)
-	 * @param terminator cast=(const gchar *),flags=sentinel
-	 */
-	public static final native void gtk_widget_style_get(long widget, byte[] property_name, long[] value, long terminator);
 
 	/* GtkWidget [GTK4 only] */
 	/**
-	 * @param widget cast=(GtkWidget *)
-	 * @param child cast=(GtkWidget *)
-	 * @param snapshot cast=(GtkSnapshot *)
-	 */
-	/* [If-def'd in os.h] */
-	public static final native void gtk_widget_snapshot_child(long widget, long child, long snapshot);
-	/**
-	 * @method flags=dynamic
-	 * @param src_widget cast=(GtkWidget *)
-	 * @param dest_widget cast=(GtkWidget *)
-	 * @param dest_x cast=(double *)
-	 * @param dest_y cast=(double *)
-	 */
-	public static final native boolean gtk_widget_translate_coordinates(long src_widget, long dest_widget, double src_x, double src_y, double[] dest_x, double[] dest_y);
-	/**
 	 * @method flags=dynamic
 	 * @param widget cast=(GtkWidget *)
 	 * @param allocation cast=(GtkAllocation *),flags=no_out
 	 */
 	public static final native void gtk_widget_size_allocate(long widget, GtkAllocation allocation, int baseline);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param cursor cast=(GdkCursor *)
-	 */
-	public static final native void gtk_widget_set_cursor(long widget, long cursor);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param orientation cast=(GtkOrientation)
-	 * @param for_size cast=(int)
-	 * @param minimum cast=(int *)
-	 * @param natural cast=(int *)
-	 * @param minimum_baseline cast=(int *)
-	 * @param natural_baseline cast=(int *)
-	 */
-	public static final native void gtk_widget_measure(long widget, int orientation, int for_size, int[] minimum, int[] natural, int[] minimum_baseline, int[] natural_baseline);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native long gtk_widget_get_native(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param name cast=(const char *)
-	 * @param format_string cast=(const char *)
-	 */
-	public static final native boolean gtk_widget_activate_action(long widget, byte[] name, byte[] format_string);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param action_name cast=(const char *)
-	 */
-	public static final native void gtk_widget_action_set_enabled(long widget, byte[] action_name, boolean enabled);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * @param controller cast=(GtkEventController *)
-	 */
-	public static final native void gtk_widget_add_controller(long widget, long controller);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * */
-	public static final native long gtk_widget_get_first_child(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * */
-	public static final native long gtk_widget_get_last_child(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * */
-	public static final native long gtk_widget_get_next_sibling(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 * */
-	public static final native long gtk_widget_get_prev_sibling(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native long gtk_widget_get_root(long widget);
-	/**
-	 * @method flags=dynamic
-	 * @param widget_class cast=(GtkWidgetClass *)
-	 * @param mods cast=(GdkModifierType)
-	 * @param signal cast=(const char *)
-	 * @param format_string cast=(const char *)
-	 */
-	public static final native void gtk_widget_class_add_binding_signal(long widget_class, int keyval, int mods, byte[] signal, byte[] format_string, boolean arg1, boolean arg2, boolean arg3);
-	/**
-	 * @method flags=dynamic
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native boolean gtk_widget_get_receives_default(long widget);
 
 
 	/* GtkWindow */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java
index 2a124ed..01434a7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java
@@ -266,6 +266,140 @@
 	/* GtkWidget */
 	/** @param widget cast=(GtkWidget *) */
 	public static final native long gtk_widget_get_accessible(long widget);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param widget cast=(GtkWidget *)
+	 * @param font cast=(const PangoFontDescription *)
+	 */
+	/* deprecated as of 3.16 */
+	public static final native void gtk_widget_override_font(long widget, long font);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param widget cast=(GtkWidget *)
+	 * @param new_parent cast=(GtkWidget *)
+	 */
+	/* deprecated as of 3.14 */
+	public static final native void gtk_widget_reparent(long widget, long new_parent);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param widget cast=(GtkWidget *)
+	 * @param double_buffered cast=(gboolean)
+	 */
+	/* deprecated as of 3.14 */
+	public static final native void gtk_widget_set_double_buffered(long widget, boolean double_buffered);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param width cast=(gint)
+	 * @param minimum_size cast=(gint *)
+	 * @param natural_size cast=(gint *)
+	 */
+	public static final native void gtk_widget_get_preferred_height_for_width(long widget, int width, int[] minimum_size, int[] natural_size);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param minimum_size cast=(gint *)
+	 * @param natural_size cast=(gint *)
+	 */
+	public static final native void gtk_widget_get_preferred_height(long widget, int[] minimum_size, int[] natural_size);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param height cast=(gint)
+	 * @param minimum_size cast=(gint *)
+	 * @param natural_size cast=(gint *)
+	 */
+	public static final native void gtk_widget_get_preferred_width_for_height(long widget, int height, int[] minimum_size, int[] natural_size);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_screen(long widget);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param has_window cast=(gboolean)
+	 */
+	public static final native void gtk_widget_set_has_window(long widget, boolean has_window);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param accel_signal cast=(const gchar *)
+	 * @param accel_group cast=(GtkAccelGroup *)
+	 * @param accel_key cast=(guint)
+	 * @param accel_mods cast=(GdkModifierType)
+	 */
+	public static final native void gtk_widget_add_accelerator(long widget, byte[] accel_signal, long accel_group, int accel_key, int accel_mods, int accel_flags);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param accel_group cast=(GtkAccelGroup *)
+	 * @param accel_key cast=(guint)
+	 * @param accel_mods cast=(GdkModifierType)
+	 */
+	public static final native void gtk_widget_remove_accelerator(long widget, long accel_group, int accel_key, int accel_mods);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param events cast=(gint)
+	 */
+	public static final native void gtk_widget_add_events(long widget, int events);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native void gtk_widget_destroy(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native int gtk_widget_get_events(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_window(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_toplevel(long widget);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param redraw cast=(gboolean)
+	 */
+	public static final native void gtk_widget_set_redraw_on_allocate(long widget, boolean redraw);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param event cast=(GdkEvent *)
+	 */
+	public static final native boolean gtk_widget_event(long widget, long event);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param cr cast=(cairo_t *)
+	 */
+	public static final native void gtk_widget_draw(long widget, long cr);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native boolean gtk_widget_get_has_window(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native boolean gtk_widget_get_can_default(long widget);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param can_default cast=(gboolean)
+	 */
+	public static final native void gtk_widget_set_can_default(long widget, boolean can_default);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param parent_window cast=(GdkWindow *)
+	 */
+	public static final native void gtk_widget_set_parent_window(long widget, long parent_window);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param region cast=(cairo_region_t *)
+	 */
+	public static final native void gtk_widget_shape_combine_region(long widget, long region);
+	/**
+	 * @param src_widget cast=(GtkWidget *)
+	 * @param dest_widget cast=(GtkWidget *)
+	 * @param dest_x cast=(gint *)
+	 * @param dest_y cast=(gint *)
+	 */
+	public static final native boolean gtk_widget_translate_coordinates(long src_widget, long dest_widget, int src_x, int src_y, int[] dest_x, int[] dest_y);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param property_name cast=(const gchar *)
+	 * @param terminator cast=(const gchar *),flags=sentinel
+	 */
+	public static final native void gtk_widget_style_get(long widget, byte[] property_name, int[] value, long terminator);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param property_name cast=(const gchar *)
+	 * @param terminator cast=(const gchar *),flags=sentinel
+	 */
+	public static final native void gtk_widget_style_get(long widget, byte[] property_name, long[] value, long terminator);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param region cast=(cairo_region_t *)
+	 */
+	public static final native void gtk_widget_input_shape_combine_region(long widget, long region);
 
 	/* Drag and Drop API */
 	/**
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java
index 0f1b645..0883e88 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java
@@ -345,4 +345,71 @@
 	/* GtkScrollbar */
 	/** @param scrollbar cast=(GtkScrollbar *) */
 	public static final native long gtk_scrollbar_get_adjustment(long scrollbar);
+
+	/* GtkWidget */
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param child cast=(GtkWidget *)
+	 * @param snapshot cast=(GtkSnapshot *)
+	 */
+	public static final native void gtk_widget_snapshot_child(long widget, long child, long snapshot);
+	/**
+	 * @param src_widget cast=(GtkWidget *)
+	 * @param dest_widget cast=(GtkWidget *)
+	 * @param dest_x cast=(double *)
+	 * @param dest_y cast=(double *)
+	 */
+	public static final native boolean gtk_widget_translate_coordinates(long src_widget, long dest_widget, double src_x, double src_y, double[] dest_x, double[] dest_y);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param cursor cast=(GdkCursor *)
+	 */
+	public static final native void gtk_widget_set_cursor(long widget, long cursor);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param orientation cast=(GtkOrientation)
+	 * @param for_size cast=(int)
+	 * @param minimum cast=(int *)
+	 * @param natural cast=(int *)
+	 * @param minimum_baseline cast=(int *)
+	 * @param natural_baseline cast=(int *)
+	 */
+	public static final native void gtk_widget_measure(long widget, int orientation, int for_size, int[] minimum, int[] natural, int[] minimum_baseline, int[] natural_baseline);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_native(long widget);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param name cast=(const char *)
+	 * @param format_string cast=(const char *)
+	 */
+	public static final native boolean gtk_widget_activate_action(long widget, byte[] name, byte[] format_string);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param action_name cast=(const char *)
+	 */
+	public static final native void gtk_widget_action_set_enabled(long widget, byte[] action_name, boolean enabled);
+	/**
+	 * @param widget cast=(GtkWidget *)
+	 * @param controller cast=(GtkEventController *)
+	 */
+	public static final native void gtk_widget_add_controller(long widget, long controller);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_first_child(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_last_child(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_next_sibling(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_prev_sibling(long widget);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native long gtk_widget_get_root(long widget);
+	/**
+	 * @param widget_class cast=(GtkWidgetClass *)
+	 * @param mods cast=(GdkModifierType)
+	 * @param signal cast=(const char *)
+	 * @param format_string cast=(const char *)
+	 */
+	public static final native void gtk_widget_class_add_binding_signal(long widget_class, int keyval, int mods, byte[] signal, byte[] format_string, boolean arg1, boolean arg2, boolean arg3);
+	/** @param widget cast=(GtkWidget *) */
+	public static final native boolean gtk_widget_get_receives_default(long widget);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java
index ac51b04..182fbee 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Printing/gtk/org/eclipse/swt/printing/PrintDialog.java
@@ -492,7 +492,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(handle);
 	} else {
-		GTK.gtk_widget_destroy(handle);
+		GTK3.gtk_widget_destroy(handle);
 	}
 	return data;
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
index 2ec94b4..56e05ad 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
@@ -597,7 +597,7 @@
 				}
 			}
 			if (browser != null) {
-				GTK.gtk_widget_event (browser.handle, event);
+				GTK3.gtk_widget_event (browser.handle, event);
 			}
 		}
 		return 0;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java
index de09937..5810f81 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java
@@ -979,7 +979,7 @@
 		if (GTK.GTK4) {
 			GTK4.gtk_window_destroy(shellHandle);
 		} else {
-			GTK.gtk_widget_destroy(shellHandle);
+			GTK3.gtk_widget_destroy(shellHandle);
 		}
 	}
 	shellHandle = 0;
@@ -1107,7 +1107,7 @@
 		long monitor;
 
 		if (GTK.GTK4) {
-			long surface = GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native(shellHandle));
+			long surface = GTK4.gtk_native_get_surface(GTK4.gtk_widget_get_native(shellHandle));
 			monitor = GDK.gdk_display_get_monitor_at_surface(display, surface);
 		} else {
 			monitor = GDK.gdk_display_get_monitor_at_point(display, 0, 0);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index 7667f64..76bdf46 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
@@ -127,7 +127,7 @@
 		gtk_style_context_get_border(context, stateFlag, gtkBorder);
 		return gtkBorder;
 	} else {
-		GTK.gtk_widget_style_get (handle, border, borderPtr,0);
+		GTK3.gtk_widget_style_get (handle, border, borderPtr,0);
 		if (borderPtr[0] != 0) {
 			OS.memmove (gtkBorder, borderPtr[0], GtkBorder.sizeof);
 			GTK.gtk_border_free(borderPtr[0]);
@@ -213,9 +213,9 @@
 		int trimWidth, trimHeight;
 		if (!GTK.GTK4) {
 			int[] focusWidth = new int[1];
-			GTK.gtk_widget_style_get (handle, OS.focus_line_width, focusWidth, 0);
+			GTK3.gtk_widget_style_get (handle, OS.focus_line_width, focusWidth, 0);
 			int[] focusPadding = new int[1];
-			GTK.gtk_widget_style_get (handle, OS.focus_padding, focusPadding, 0);
+			GTK3.gtk_widget_style_get (handle, OS.focus_padding, focusPadding, 0);
 			trimWidth = 2 * (borderWidth + focusWidth [0] + focusPadding [0]);
 		} else {
 			trimWidth = 2 * borderWidth;
@@ -224,7 +224,7 @@
 		int indicatorHeight = 0;
 		if ((style & (SWT.CHECK | SWT.RADIO)) != 0) {
 			if (GTK.GTK4) {
-				long icon = GTK.gtk_widget_get_first_child(handle);
+				long icon = GTK4.gtk_widget_get_first_child(handle);
 				GtkRequisition minimum = new GtkRequisition ();
 				GTK.gtk_widget_get_preferred_size(icon, minimum, null);
 				long context = GTK.gtk_widget_get_style_context(icon);
@@ -234,8 +234,8 @@
 			} else {
 				int[] indicatorSize = new int[1];
 				int[] indicatorSpacing = new int[1];
-				GTK.gtk_widget_style_get (handle, OS.indicator_size, indicatorSize, 0);
-				GTK.gtk_widget_style_get (handle, OS.indicator_spacing, indicatorSpacing, 0);
+				GTK3.gtk_widget_style_get (handle, OS.indicator_size, indicatorSize, 0);
+				GTK3.gtk_widget_style_get (handle, OS.indicator_spacing, indicatorSpacing, 0);
 				indicatorHeight = indicatorSize [0] + 2 * indicatorSpacing [0];
 				trimWidth += indicatorHeight + indicatorSpacing [0];
 			}
@@ -246,7 +246,7 @@
 			GtkBorder innerBorder = getBorder (OS.inner_border, handle, INNER_BORDER);
 			trimWidth += innerBorder.left + innerBorder.right;
 			trimHeight += innerBorder.top + innerBorder.bottom;
-			boolean canDefault = GTK.GTK4 ? GTK.gtk_widget_get_receives_default(handle) : GTK.gtk_widget_get_can_default(handle);
+			boolean canDefault = GTK.GTK4 ? GTK4.gtk_widget_get_receives_default(handle) : GTK3.gtk_widget_get_can_default(handle);
 			if (canDefault) {
 				GtkBorder defaultBorder = getBorder(OS.default_border, handle, DEFAULT_BORDER);
 				trimWidth += defaultBorder.left + defaultBorder.right;
@@ -283,7 +283,7 @@
 		GTK.gtk_widget_set_size_request (boxHandle, reqWidth [0], reqHeight [0]);
 	}
 	if (wHint != SWT.DEFAULT || hHint != SWT.DEFAULT) {
-		boolean canDefault = GTK.GTK4 ? GTK.gtk_widget_get_receives_default(handle) : GTK.gtk_widget_get_can_default(handle);
+		boolean canDefault = GTK.GTK4 ? GTK4.gtk_widget_get_receives_default(handle) : GTK3.gtk_widget_get_can_default(handle);
 		if (canDefault) {
 			GtkBorder border = getBorder(OS.default_border, handle, DEFAULT_BORDER);
 			if (wHint != SWT.DEFAULT) size.x += border.left + border.right;
@@ -310,7 +310,7 @@
 			if (GTK.GTK4) {
 				handle = GTK4.gtk_button_new_from_icon_name(arrowType);
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
-				arrowHandle = GTK.gtk_widget_get_first_child(handle);
+				arrowHandle = GTK4.gtk_widget_get_first_child(handle);
 				if (arrowHandle == 0) error (SWT.ERROR_NO_HANDLES);
 			} else {
 				arrowHandle = GTK.gtk_image_new_from_icon_name(arrowType, GTK.GTK_ICON_SIZE_MENU);
@@ -376,7 +376,7 @@
 		default:
 			handle = GTK.gtk_button_new ();
 			if (handle == 0) error (SWT.ERROR_NO_HANDLES);
-			if (!GTK.GTK4) GTK.gtk_widget_set_can_default (handle, true);
+			if (!GTK.GTK4) GTK3.gtk_widget_set_can_default (handle, true);
 			break;
 	}
 
@@ -419,7 +419,7 @@
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add(fixedHandle, handle);
 	}
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java
index 8fd1d72..cd0a73e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java
@@ -215,7 +215,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(handle);
 	} else {
-		GTK.gtk_widget_destroy(handle);
+		GTK3.gtk_widget_destroy(handle);
 	}
 
 	return rgb;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
index c5cf49c..9e13e4e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
@@ -520,8 +520,8 @@
 	checkWidget ();
 	if (entryHandle != 0) {
 		if (GTK.GTK4) {
-			long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
-			GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
+			long textHandle = GTK4.gtk_widget_get_first_child(entryHandle);
+			GTK4.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 		} else {
 			GTK3.gtk_editable_copy_clipboard(entryHandle);
 		}
@@ -534,7 +534,7 @@
 
 	fixedHandle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (fixedHandle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 
 	long oldList = GTK.gtk_window_list_toplevels();
 	if ((style & SWT.READ_ONLY) != 0) {
@@ -620,8 +620,8 @@
 	checkWidget ();
 	if (entryHandle != 0) {
 		if (GTK.GTK4) {
-			long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
-			GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
+			long textHandle = GTK4.gtk_widget_get_first_child(entryHandle);
+			GTK4.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 		} else {
 			GTK3.gtk_editable_cut_clipboard(entryHandle);
 		}
@@ -716,14 +716,14 @@
 	long result = 0;
 
 	if (GTK.GTK4) {
-		for (long child = GTK.gtk_widget_get_first_child(handle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(handle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			if (GTK.GTK_IS_BOX(child)) {
 				buttonBoxHandle = child;
 				break;
 			}
 		}
 
-		for (long child = GTK.gtk_widget_get_first_child(buttonBoxHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(buttonBoxHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			if (GTK.GTK_IS_BUTTON(child)) {
 				result = child;
 				break;
@@ -777,7 +777,7 @@
 
 	if (cellBoxHandle != 0) {
 		if (GTK.GTK4) {
-			for (long child = GTK.gtk_widget_get_first_child(cellBoxHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+			for (long child = GTK4.gtk_widget_get_first_child(cellBoxHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 				String name = display.gtk_widget_get_name(child);
 				if (name != null && name.equals("GtkBuiltinIcon")) {
 					result = child;
@@ -924,19 +924,19 @@
 		if (eventHandle != 0) {
 			if (GTK.GTK4) {
 				long motionController = GTK4.gtk_event_controller_motion_new();
-				GTK.gtk_widget_add_controller(eventHandle, motionController);
+				GTK4.gtk_widget_add_controller(eventHandle, motionController);
 				OS.g_signal_connect (motionController, OS.motion, display.enterMotionScrollProc, MOTION);
 				OS.g_signal_connect (motionController, OS.motion, display.enterMotionScrollProc, MOTION_INVERSE);
 
 				long gestureController = GTK4.gtk_gesture_click_new();
-				GTK.gtk_widget_add_controller(eventHandle, gestureController);
+				GTK4.gtk_widget_add_controller(eventHandle, gestureController);
 				OS.g_signal_connect(gestureController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 				OS.g_signal_connect(gestureController, OS.released, display.gesturePressReleaseProc, GESTURE_RELEASED);
 
 				//TODO: GTK4 event-after
 			} else {
 				int eventMask =	GDK.GDK_POINTER_MOTION_MASK | GDK.GDK_BUTTON_PRESS_MASK | GDK.GDK_BUTTON_RELEASE_MASK;
-				GTK.gtk_widget_add_events (eventHandle, eventMask);
+				GTK3.gtk_widget_add_events (eventHandle, eventMask);
 				OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, display.getClosure (MOTION_NOTIFY_EVENT), false);
 				OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, display.getClosure (MOTION_NOTIFY_EVENT_INVERSE), true);
 
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 2cbaac8..8809d0b 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
@@ -166,7 +166,7 @@
 
 	if (GTK.GTK4) {
 		ArrayList<Control> childrenList = new ArrayList<>();
-		for (long child = GTK.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			Widget childWidget = display.getWidget(child);
 			if (childWidget != null && childWidget instanceof Control && childWidget != this) {
 				childrenList.add((Control)childWidget);
@@ -318,7 +318,7 @@
 		if (fixed) {
 			fixedHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 			if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
-			if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+			if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		}
 
 		long vadj = GTK.gtk_adjustment_new (0, 0, 100, 1, 10, 10);
@@ -340,7 +340,7 @@
 
 	handle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (handle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(handle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(handle, true);
 	GTK.gtk_widget_set_can_focus (handle, true);
 
 	if ((style & SWT.EMBEDDED) == 0) {
@@ -398,7 +398,7 @@
 		}
 	}
 	if ((style & SWT.NO_REDRAW_RESIZE) != 0 && (style & SWT.RIGHT_TO_LEFT) == 0) {
-		GTK.gtk_widget_set_redraw_on_allocate (handle, false);
+		GTK3.gtk_widget_set_redraw_on_allocate (handle, false);
 	}
 	/*
 	* Bug in GTK.  When a widget is double buffered and the back
@@ -410,7 +410,7 @@
 	* is not explicitly set.
 	*/
 	if ((style & SWT.DOUBLE_BUFFERED) == 0 && (style & SWT.NO_BACKGROUND) != 0) {
-		GTK.gtk_widget_set_double_buffered (handle, false);
+		GTK3.gtk_widget_set_double_buffered (handle, false);
 	}
 }
 
@@ -764,7 +764,7 @@
 	int count = 0;
 
 	if (GTK.GTK4) {
-		for (long child = GTK.gtk_widget_get_first_child(handle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(handle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			count++;
 		}
 	} else {
@@ -985,7 +985,7 @@
 void hookEvents () {
 	super.hookEvents ();
 	if ((state & CANVAS) != 0) {
-		if (!GTK.GTK4) GTK.gtk_widget_add_events (handle, GDK.GDK_POINTER_MOTION_HINT_MASK);
+		if (!GTK.GTK4) GTK3.gtk_widget_add_events (handle, GDK.GDK_POINTER_MOTION_HINT_MASK);
 		if (scrolledHandle != 0) {
 			OS.g_signal_connect_closure (scrolledHandle, OS.scroll_child, display.getClosure (SCROLL_CHILD), false);
 		}
@@ -1442,7 +1442,7 @@
 void connectFixedHandleDraw () {
 	long paintHandle = fixedHandle;
 	int paintMask = GDK.GDK_EXPOSURE_MASK;
-	GTK.gtk_widget_add_events (paintHandle, paintMask);
+	GTK3.gtk_widget_add_events (paintHandle, paintMask);
 
 	OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [DRAW], 0, display.getClosure (DRAW), true);
 }
@@ -1464,7 +1464,7 @@
 void propagateDraw (long container, long cairo) {
 	if (container == fixedHandle) {
 		if (GTK.GTK4) {
-			for (long child = GTK.gtk_widget_get_first_child(container); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+			for (long child = GTK4.gtk_widget_get_first_child(container); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 				//TODO: GTK4 no gtk_container_propagate_draw. Possibly not required at all.
 			}
 		} else {
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 99837b6..44717e7 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
@@ -448,18 +448,18 @@
 	if (GTK.GTK4) {
 		long keyController = GTK4.gtk_event_controller_key_new();
 		GTK.gtk_event_controller_set_propagation_phase(keyController, GTK.GTK_PHASE_TARGET);
-		GTK.gtk_widget_add_controller(focusHandle, keyController);
+		GTK4.gtk_widget_add_controller(focusHandle, keyController);
 		OS.g_signal_connect(keyController, OS.key_pressed, display.keyPressReleaseProc, KEY_PRESSED);
 		OS.g_signal_connect(keyController, OS.key_released, display.keyPressReleaseProc, KEY_RELEASED);
 
 		long focusController = GTK4.gtk_event_controller_focus_new();
 		GTK.gtk_event_controller_set_propagation_phase(focusController, GTK.GTK_PHASE_TARGET);
-		GTK.gtk_widget_add_controller(focusHandle, focusController);
+		GTK4.gtk_widget_add_controller(focusHandle, focusController);
 		OS.g_signal_connect(focusController, OS.enter, display.focusProc, FOCUS_IN);
 		OS.g_signal_connect(focusController, OS.leave, display.focusProc, FOCUS_OUT);
 	} else {
 		int focusMask = GDK.GDK_KEY_PRESS_MASK | GDK.GDK_KEY_RELEASE_MASK | GDK.GDK_FOCUS_CHANGE_MASK;
-		GTK.gtk_widget_add_events (focusHandle, focusMask);
+		GTK3.gtk_widget_add_events (focusHandle, focusMask);
 		OS.g_signal_connect_closure_by_id(focusHandle, display.signalIds[KEY_PRESS_EVENT], 0, display.getClosure(KEY_PRESS_EVENT), false);
 		OS.g_signal_connect_closure_by_id(focusHandle, display.signalIds[KEY_RELEASE_EVENT], 0, display.getClosure(KEY_RELEASE_EVENT), false);
 		OS.g_signal_connect_closure_by_id(focusHandle, display.signalIds[FOCUS_IN_EVENT], 0, display.getClosure(FOCUS_IN_EVENT), false);
@@ -473,35 +473,35 @@
 	if (GTK.GTK4) {
 		long clickGesture = GTK4.gtk_gesture_click_new();
 		GTK.gtk_gesture_single_set_button(clickGesture, 0);
-		GTK.gtk_widget_add_controller(eventHandle, clickGesture);
+		GTK4.gtk_widget_add_controller(eventHandle, clickGesture);
 		OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 		OS.g_signal_connect(clickGesture, OS.released, display.gesturePressReleaseProc, GESTURE_RELEASED);
 
 		long scrollController = GTK4.gtk_event_controller_scroll_new(GTK.GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES);
 		GTK.gtk_event_controller_set_propagation_phase(scrollController, GTK.GTK_PHASE_TARGET);
-		GTK.gtk_widget_add_controller(eventHandle, scrollController);
+		GTK4.gtk_widget_add_controller(eventHandle, scrollController);
 		OS.g_signal_connect(scrollController, OS.scroll, display.enterMotionScrollProc, SCROLL);
 
 		long motionController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
-		GTK.gtk_widget_add_controller(eventHandle, motionController);
+		GTK4.gtk_widget_add_controller(eventHandle, motionController);
 		OS.g_signal_connect(motionController, OS.motion, display.enterMotionScrollProc, MOTION);
 
 		long enterExitController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_event_controller_set_propagation_phase(enterExitController, GTK.GTK_PHASE_TARGET);
-		GTK.gtk_widget_add_controller(enterExitHandle, enterExitController);
+		GTK4.gtk_widget_add_controller(enterExitHandle, enterExitController);
 		OS.g_signal_connect(enterExitController, OS.enter, display.enterMotionScrollProc, ENTER);
 		OS.g_signal_connect(enterExitController, OS.leave, display.leaveProc, LEAVE);
 	} else {
 		int eventMask = GDK.GDK_POINTER_MOTION_MASK | GDK.GDK_BUTTON_PRESS_MASK | GDK.GDK_BUTTON_RELEASE_MASK | GDK.GDK_SCROLL_MASK | GDK.GDK_SMOOTH_SCROLL_MASK;
-		GTK.gtk_widget_add_events (eventHandle, eventMask);
+		GTK3.gtk_widget_add_events (eventHandle, eventMask);
 		OS.g_signal_connect_closure_by_id(eventHandle, display.signalIds[MOTION_NOTIFY_EVENT], 0, display.getClosure(MOTION_NOTIFY_EVENT), false);
 		OS.g_signal_connect_closure_by_id(eventHandle, display.signalIds[BUTTON_PRESS_EVENT], 0, display.getClosure(BUTTON_PRESS_EVENT), false);
 		OS.g_signal_connect_closure_by_id(eventHandle, display.signalIds[BUTTON_RELEASE_EVENT], 0, display.getClosure(BUTTON_RELEASE_EVENT), false);
 		OS.g_signal_connect_closure_by_id(eventHandle, display.signalIds[SCROLL_EVENT], 0, display.getClosure(SCROLL_EVENT), false);
 
 		int enterExitMask = GDK.GDK_ENTER_NOTIFY_MASK | GDK.GDK_LEAVE_NOTIFY_MASK;
-		GTK.gtk_widget_add_events (enterExitHandle, enterExitMask);
+		GTK3.gtk_widget_add_events (enterExitHandle, enterExitMask);
 		OS.g_signal_connect_closure_by_id(enterExitHandle, display.signalIds[ENTER_NOTIFY_EVENT], 0, display.getClosure(ENTER_NOTIFY_EVENT), false);
 		OS.g_signal_connect_closure_by_id(enterExitHandle, display.signalIds[LEAVE_NOTIFY_EVENT], 0, display.getClosure(LEAVE_NOTIFY_EVENT), false);
 	}
@@ -532,7 +532,7 @@
 		OS.memmove(widgetClass, widgetClassStruct);
 	} else {
 		int paintMask = GDK.GDK_EXPOSURE_MASK;
-		GTK.gtk_widget_add_events (paintHandle, paintMask);
+		GTK3.gtk_widget_add_events (paintHandle, paintMask);
 		OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [DRAW], 0, display.getClosure (EXPOSE_EVENT_INVERSE), false);
 		OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [DRAW], 0, display.getClosure (DRAW), true);
 		OS.g_signal_connect_closure_by_id (paintHandle, display.signalIds [STYLE_UPDATED], 0, display.getClosure (STYLE_UPDATED), false);
@@ -582,7 +582,7 @@
 	if (GTK.GTK4) return topHandle;
 	long paintHandle = handle;
 	while (paintHandle != topHandle) {
-		if (GTK.gtk_widget_get_has_window(paintHandle)) break;
+		if (GTK3.gtk_widget_get_has_window(paintHandle)) break;
 		paintHandle = GTK.gtk_widget_get_parent (paintHandle);
 	}
 	return paintHandle;
@@ -640,7 +640,7 @@
 	// Prevent allocation warnings
 	GTK.gtk_widget_get_preferred_size(topHandle, null, null);
 	GTK.gtk_widget_size_allocate(topHandle, allocation);
-	GTK.gtk_widget_draw(topHandle, gc.handle);
+	GTK3.gtk_widget_draw(topHandle, gc.handle);
 	return true;
 }
 
@@ -854,16 +854,16 @@
 		int [] natural_size = new int [1];
 		if (wHint == SWT.DEFAULT) {
 			if (GTK.GTK4) {
-				GTK.gtk_widget_measure(h, GTK.GTK_ORIENTATION_HORIZONTAL, height, null, natural_size, null, null);
+				GTK4.gtk_widget_measure(h, GTK.GTK_ORIENTATION_HORIZONTAL, height, null, natural_size, null, null);
 			} else {
-				GTK.gtk_widget_get_preferred_width_for_height (h, height, null, natural_size);
+				GTK3.gtk_widget_get_preferred_width_for_height (h, height, null, natural_size);
 			}
 			width = natural_size [0];
 		} else {
 			if (GTK.GTK4) {
-				GTK.gtk_widget_measure(h, GTK.GTK_ORIENTATION_VERTICAL, width, null, natural_size, null, null);
+				GTK4.gtk_widget_measure(h, GTK.GTK_ORIENTATION_VERTICAL, width, null, natural_size, null, null);
 			} else {
-				GTK.gtk_widget_get_preferred_height_for_width (h, width, null, natural_size);
+				GTK3.gtk_widget_get_preferred_height_for_width (h, width, null, natural_size);
 			}
 			height = natural_size [0];
 		}
@@ -1395,7 +1395,7 @@
 	long topHandle = topHandle ();
 
 	if (OS.G_OBJECT_TYPE(topHandle) == GTK.GTK_TYPE_WINDOW()) {
-		GTK.gtk_widget_shape_combine_region(topHandle, shape_region);
+		GTK3.gtk_widget_shape_combine_region(topHandle, shape_region);
 		/*
 		 * Bug in GTK: on Wayland, pixels in window outside shape_region
 		 * is black instead of transparent when the widget is fully opaque (i.e. opacity == 1.0)
@@ -1424,12 +1424,12 @@
 
 	if (GTK.GTK4) {
 		int count = 0;
-		for (long child = GTK.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			count++;
 		}
 
 		if (count > 1) {
-			handle = GTK.gtk_widget_get_prev_sibling(GTK.gtk_widget_get_last_child(parentHandle));
+			handle = GTK4.gtk_widget_get_prev_sibling(GTK4.gtk_widget_get_last_child(parentHandle));
 		}
 	} else {
 		long list = GTK3.gtk_container_get_children (parentHandle);
@@ -1793,7 +1793,7 @@
  */
 Point getControlOrigin() {
 	double[] originX = new double[1], originY = new double[1];
-	boolean success = GTK.gtk_widget_translate_coordinates(fixedHandle, getShell().shellHandle, 0, 0, originX, originY);
+	boolean success = GTK4.gtk_widget_translate_coordinates(fixedHandle, getShell().shellHandle, 0, 0, originX, originY);
 
 	return success ? new Point((int)originX[0], (int)originY[0]) : new Point(0, 0);
 }
@@ -2878,7 +2878,7 @@
 			// gtk_widget_reparent (..) is deprecated as of Gtk 3.14 and removed in Gtk4.
 			// However, the current alternative of removing/adding widget from/to a container causes errors. (see note below).
 			// TODO - research a better way to reparent. See 534089.
-			GTK.gtk_widget_reparent(widget, newParentHandle);
+			GTK3.gtk_widget_reparent(widget, newParentHandle);
 
 			// Removing/Adding containers doesn't seem to reparent sub-gdkWindows properly and throws errors.
 			// Steps to reproduce:
@@ -4052,7 +4052,7 @@
 			long focusHandle = focusControl != null ? focusControl.focusHandle () : 0;
 			if (focusHandle != 0) {
 				display.mnemonicControl = this;
-				GTK.gtk_widget_event (focusHandle, eventPtr);
+				GTK3.gtk_widget_event (focusHandle, eventPtr);
 				display.mnemonicControl = null;
 			}
 			result = 1;
@@ -4224,8 +4224,8 @@
 	double [] eventRX = new double[1];
 	double [] eventRY = new double[1];
 	if (GTK.GTK4) {
-		long root = GTK.gtk_widget_get_root(widget);
-		GTK.gtk_widget_translate_coordinates(widget, root, eventX[0], eventY[0], eventRX, eventRY);
+		long root = GTK4.gtk_widget_get_root(widget);
+		GTK4.gtk_widget_translate_coordinates(widget, root, eventX[0], eventY[0], eventRX, eventRY);
 	} else {
 		GDK.gdk_event_get_root_coords(eventPtr, eventRX, eventRY);
 	}
@@ -5192,7 +5192,7 @@
 }
 
 void setBackgroundSurface (Image image) {
-	long window = GTK.gtk_widget_get_window (paintHandle ());
+	long window = GTK3.gtk_widget_get_window (paintHandle ());
 	if (GTK.GTK_VERSION >= OS.VERSION(3, 22, 0)) {
 		// gdk_window_set_background_pattern() deprecated in GTK3.22+
 		return;
@@ -5261,7 +5261,7 @@
 void setCursor (long cursor) {
 	if (GTK.GTK4) {
 		long eventHandle = eventHandle ();
-		GTK.gtk_widget_set_cursor (eventHandle, cursor);
+		GTK4.gtk_widget_set_cursor (eventHandle, cursor);
 	} else {
 		long window = eventWindow ();
 		if (window != 0) {
@@ -5838,7 +5838,7 @@
 					/* Explicitly hiding the window avoids flicker on GTK+ >= 2.6 */
 					GDK.gdk_window_hide (redrawWindow);
 					GDK.gdk_window_destroy (redrawWindow);
-					GDK.gdk_window_set_events (window, GTK.gtk_widget_get_events (paintHandle ()));
+					GDK.gdk_window_set_events (window, GTK3.gtk_widget_get_events (paintHandle ()));
 					redrawWindow = 0;
 				}
 			}
@@ -6100,7 +6100,7 @@
 				if (above && sibling.enableWindow != 0) {
 					siblingWindow = enableWindow;
 				} else {
-					siblingWindow = GTK.gtk_widget_get_window (siblingHandle);
+					siblingWindow = GTK3.gtk_widget_get_window (siblingHandle);
 				}
 			}
 			long redrawWindow = fixChildren ? parent.redrawWindow : 0;
@@ -6724,10 +6724,10 @@
 				if (control == null) control = this;
 				long gdkResource;
 				if (GTK.GTK4) {
-					gdkResource = GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native (handle));
+					gdkResource = GTK4.gtk_native_get_surface(GTK4.gtk_widget_get_native (handle));
 					drawBackground (control, gdkResource, cairo, rect.x, rect.y, rect.width, rect.height);
 				} else {
-					gdkResource = GTK.gtk_widget_get_window(handle);
+					gdkResource = GTK3.gtk_widget_get_window(handle);
 					if (gdkResource != 0) {
 						drawBackground (control, gdkResource, 0, rect.x, rect.y, rect.width, rect.height);
 					} else {
@@ -6770,7 +6770,7 @@
  */
 Point getSurfaceOrigin () {
 	double[] originX = new double[1], originY = new double[1];
-	boolean success = GTK.gtk_widget_translate_coordinates(fixedHandle, getShell().shellHandle, 0, 0, originX, originY);
+	boolean success = GTK4.gtk_widget_translate_coordinates(fixedHandle, getShell().shellHandle, 0, 0, originX, originY);
 
 	return success ? new Point((int)originX[0], (int)originY[0]) : new Point(0, 0);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
index 569fbe6..fd89010 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
@@ -418,7 +418,7 @@
 private void createHandleForFixed () {
 	fixedHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 	if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 }
 
 private void createHandleForCalendar () {
@@ -474,7 +474,7 @@
 	long adjusment = GTK.gtk_adjustment_new (0, -9999, 9999, 1, 0, 0);
 	if (GTK.GTK4) {
 		handle =  GTK.gtk_spin_button_new(adjusment, 1, 0);
-		textEntryHandle = GTK.gtk_widget_get_first_child(handle);
+		textEntryHandle = GTK4.gtk_widget_get_first_child(handle);
 		containerHandle = spinButtonHandle;
 	} else {
 		textEntryHandle = GTK.gtk_spin_button_new (adjusment, 1, 0);
@@ -956,7 +956,7 @@
 		hookEventsForCalendar ();
 	} else {
 		int eventMask =	GDK.GDK_POINTER_MOTION_MASK | GDK.GDK_BUTTON_PRESS_MASK | GDK.GDK_BUTTON_RELEASE_MASK;
-		GTK.gtk_widget_add_events (textEntryHandle, eventMask);
+		GTK3.gtk_widget_add_events (textEntryHandle, eventMask);
 
 
 		if ((style & SWT.DROP_DOWN) == 0 ) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
index 0a9e72b..9994726 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
@@ -1266,11 +1266,11 @@
 	if (!GTK.GTK4) {
 		byte[] atomName = Converter.wcsToMbcs ("SWT_Window_" + APP_NAME, true); //$NON-NLS-1$
 		long atom = GDK.gdk_atom_intern(atomName, false);
-		GDK.gdk_selection_owner_set(GTK.gtk_widget_get_window(shellHandle), atom, OS.CurrentTime, false);
+		GDK.gdk_selection_owner_set(GTK3.gtk_widget_get_window(shellHandle), atom, OS.CurrentTime, false);
 		GDK.gdk_selection_owner_get(atom);
 
 		// No GdkWindow on GTK4
-		GTK.gtk_widget_add_events (shellHandle, GDK.GDK_PROPERTY_CHANGE_MASK);
+		GTK3.gtk_widget_add_events (shellHandle, GDK.GDK_PROPERTY_CHANGE_MASK);
 		OS.g_signal_connect (shellHandle, OS.property_notify_event, signalProc, PROPERTY_NOTIFY);
 	}
 
@@ -1446,9 +1446,9 @@
 long emissionProc (long ihint, long n_param_values, long param_values, long data) {
 	long topLevel;
 	if (GTK.GTK4) {
-		topLevel = GTK.gtk_widget_get_native (OS.g_value_peek_pointer(param_values));
+		topLevel = GTK4.gtk_widget_get_native (OS.g_value_peek_pointer(param_values));
 	} else {
-		topLevel = GTK.gtk_widget_get_toplevel (OS.g_value_peek_pointer(param_values));
+		topLevel = GTK3.gtk_widget_get_toplevel (OS.g_value_peek_pointer(param_values));
 	}
 
 	if (topLevel == data) {
@@ -1664,11 +1664,11 @@
 	Display display = getCurrent ();
 	Widget widget = display.getWidget (handle);
 	if (widget != null) widget.snapshotToDraw(handle, snapshot);
-	long child = GTK.gtk_widget_get_first_child(handle);
+	long child = GTK4.gtk_widget_get_first_child(handle);
 	// Propagate the snapshot down the widget tree
 	while (child != 0) {
-		GTK.gtk_widget_snapshot_child(handle, child, snapshot);
-		child = GTK.gtk_widget_get_next_sibling(child);
+		GTK4.gtk_widget_snapshot_child(handle, child, snapshot);
+		child = GTK4.gtk_widget_get_next_sibling(child);
 	}
 	return 0;
 }
@@ -3316,7 +3316,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(window);
 	} else {
-		GTK.gtk_widget_destroy(window);
+		GTK3.gtk_widget_destroy(window);
 	}
 }
 
@@ -3378,7 +3378,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(window);
 	} else {
-		GTK.gtk_widget_destroy(window);
+		GTK3.gtk_widget_destroy(window);
 	}
 }
 
@@ -4733,7 +4733,7 @@
 		if (GTK.GTK4) {
 			GTK4.gtk_window_destroy(preeditWindow);
 		} else {
-			GTK.gtk_widget_destroy(preeditWindow);
+			GTK3.gtk_widget_destroy(preeditWindow);
 		}
 	}
 	preeditWindow = 0;
@@ -4847,7 +4847,7 @@
 		if (GTK.GTK4) {
 			GTK4.gtk_window_destroy(shellHandle);
 		} else {
-			GTK.gtk_widget_destroy(shellHandle);
+			GTK3.gtk_widget_destroy(shellHandle);
 		}
 	}
 	shellHandle = 0;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
index 918ac44..1589865 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
@@ -138,7 +138,7 @@
 
 	fixedHandle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (fixedHandle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 
 	handle = gtk_box_new (GTK.GTK_ORIENTATION_VERTICAL, false, 0);
 	if (handle == 0) error (SWT.ERROR_NO_HANDLES);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
index 4de7b19..285f44c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
@@ -319,11 +319,11 @@
 	OS.g_signal_connect_closure (handle, OS.activate, display.getClosure (ACTIVATE_INVERSE), true);
 	if (GTK.GTK4) {
 		long clickController = GTK4.gtk_gesture_click_new();
-		GTK.gtk_widget_add_controller(handle, clickController);
+		GTK4.gtk_widget_add_controller(handle, clickController);
 		OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 
 		long motionController = GTK4.gtk_event_controller_motion_new();
-		GTK.gtk_widget_add_controller(handle, motionController);
+		GTK4.gtk_widget_add_controller(handle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
 		long enterAddress = display.enterMotionScrollCallback.getAddress();
@@ -387,7 +387,7 @@
 		 */
 		if (!GTK.GTK4) {
 			int [] property = new int [1];
-			GTK.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
+			GTK3.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
 			y += property [0] * 2;
 			height -= property [0] * 2;
 		}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java
index bc3ae94..1a26b29a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FontDialog.java
@@ -232,7 +232,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(handle);
 	} else {
-		GTK.gtk_widget_destroy(handle);
+		GTK3.gtk_widget_destroy(handle);
 	}
 
 	return fontData;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
index 4736b03..7e20a49 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
@@ -172,7 +172,7 @@
 
 	fixedHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 	if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 
 	handle = GTK.gtk_frame_new (null);
 	if (handle == 0) error (SWT.ERROR_NO_HANDLES);
@@ -188,7 +188,7 @@
 	 * it can listen to events (clicking/tooltip etc.) and so that
 	 * background can be drawn on it.
 	 */
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(clientHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(clientHandle, true);
 
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
@@ -431,7 +431,7 @@
 	/* we draw all our children on the clientHandle*/
 	long paintHandle = clientHandle;
 	while (paintHandle != topHandle) {
-		if (GTK.gtk_widget_get_has_window(paintHandle)) break;
+		if (GTK3.gtk_widget_get_has_window(paintHandle)) break;
 		paintHandle = GTK.gtk_widget_get_parent (paintHandle);
 	}
 	return paintHandle;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index 35a8e06..ef4d958 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
@@ -233,7 +233,7 @@
 
 	fixedHandle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (fixedHandle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(fixedHandle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(fixedHandle, true);
 
 	if ((style & SWT.SEPARATOR) != 0) {
 		if ((style & SWT.HORIZONTAL)!= 0) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java
index aa90ff2..eb6b6ae 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Link.java
@@ -20,6 +20,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 
 /**
  * Instances of this class represent a selectable
@@ -151,7 +152,7 @@
 
 	handle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (handle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(handle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(handle, true);
 	GTK.gtk_widget_set_can_focus(handle, true);
 
 	layout = new TextLayout (display);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
index 6ad1c43..f51e6a7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
@@ -208,7 +208,7 @@
 	if (GTK.GTK4) {
 		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
index ce3159a..3ff9899 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Menu.java
@@ -326,7 +326,7 @@
 							rect.y = this.y - globalWindowOriginY[0];
 						} else {
 							// On Wayland, get the relative GdkWindow from the parent shell.
-							long gdkResource = GTK.gtk_widget_get_window (getShell().topHandle());
+							long gdkResource = GTK3.gtk_widget_get_window (getShell().topHandle());
 							event.window = OS.g_object_ref(gdkResource);
 							OS.memmove (eventPtr, event, GdkEventButton.sizeof);
 							// Bug in GTK?: testing with SWT_MENU_LOCATION_DEBUGGING=1 shows final_rect.x and
@@ -352,7 +352,7 @@
 						event.type = GTK.GTK4 ? GDK.GDK4_BUTTON_PRESS : GDK.GDK_BUTTON_PRESS;
 						// Only assign a window on X11, as on Wayland the window is that of the mouse pointer
 						if (OS.isX11()) {
-							event.window = OS.g_object_ref(GTK.gtk_widget_get_window (getShell().handle));
+							event.window = OS.g_object_ref(GTK3.gtk_widget_get_window (getShell().handle));
 						}
 						event.device = GDK.gdk_get_pointer(GDK.gdk_display_get_default ());
 						event.time = display.getLastEventTime ();
@@ -895,7 +895,7 @@
 		shortcutController = GTK4.gtk_shortcut_controller_new();
 		if (shortcutController == 0) error(SWT.ERROR_NO_HANDLES);
 		GTK4.gtk_shortcut_controller_set_scope(shortcutController, GTK.GTK_SHORTCUT_SCOPE_GLOBAL);
-		GTK.gtk_widget_add_controller(parent.handle, shortcutController);
+		GTK4.gtk_widget_add_controller(parent.handle, shortcutController);
 	} else {
 		OS.g_signal_connect_closure_by_id(handle, display.signalIds[SHOW_HELP], 0, display.getClosure(SHOW_HELP), false);
 
@@ -1323,15 +1323,15 @@
 			 * Menus are height-for-width only: use gtk_widget_get_preferred_height()
 			 * instead of gtk_widget_get_preferred_size().
 			 */
-			GTK.gtk_widget_get_preferred_height(handle, null, naturalHeight);
+			GTK3.gtk_widget_get_preferred_height(handle, null, naturalHeight);
 			if (naturalHeight[0] > 0) {
 				if (GTK.GTK4) {
 					/* TODO: GTK4 gdk_surface_resize/move no longer exist & have been replaced with
 					 * gdk_toplevel_begin_resize & gdk_toplevel_begin_move. These functions might change the
 					 * design of resizing and moving in GTK4 */
 				} else {
-					long topLevelWidget = GTK.gtk_widget_get_toplevel(handle);
-					long topLevelWindow = GTK.gtk_widget_get_window(topLevelWidget);
+					long topLevelWidget = GTK3.gtk_widget_get_toplevel(handle);
+					long topLevelWindow = GTK3.gtk_widget_get_window(topLevelWidget);
 					int width = GDK.gdk_window_get_width(topLevelWindow);
 					GDK.gdk_window_resize(topLevelWindow, width, naturalHeight[0]);
 				}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
index aca5e9f..283d58b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MenuItem.java
@@ -1273,9 +1273,9 @@
 	/* When accel_key is zero, it causes GTK warnings */
 	if (keysym != 0) {
 		if (add) {
-			GTK.gtk_widget_add_accelerator(handle, OS.activate, accelGroup, keysym, mask, GTK.GTK_ACCEL_VISIBLE);
+			GTK3.gtk_widget_add_accelerator(handle, OS.activate, accelGroup, keysym, mask, GTK.GTK_ACCEL_VISIBLE);
 		} else {
-			GTK.gtk_widget_remove_accelerator(handle, accelGroup, keysym, mask);
+			GTK3.gtk_widget_remove_accelerator(handle, accelGroup, keysym, mask);
 		}
 	}
 }
@@ -1348,9 +1348,9 @@
 	if (maskKeysym.keysym != 0) {
 		long accelGroup = getAccelGroup ();
 		if (show) {
-			GTK.gtk_widget_add_accelerator (handle, OS.activate, accelGroup, maskKeysym.keysym, maskKeysym.mask, GTK.GTK_ACCEL_VISIBLE);
+			GTK3.gtk_widget_add_accelerator (handle, OS.activate, accelGroup, maskKeysym.keysym, maskKeysym.mask, GTK.GTK_ACCEL_VISIBLE);
 		} else {
-			GTK.gtk_widget_remove_accelerator (handle, accelGroup, maskKeysym.keysym, maskKeysym.mask);
+			GTK3.gtk_widget_remove_accelerator (handle, accelGroup, maskKeysym.keysym, maskKeysym.mask);
 		}
 	}
 	return maskKeysym.keysym != 0;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
index 044f4de..e7c36b3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
@@ -228,7 +228,7 @@
 	if (GTK.GTK4) {
 		GTK4.gtk_window_destroy(handle);
 	} else {
-		GTK.gtk_widget_destroy(handle);
+		GTK3.gtk_widget_destroy(handle);
 	}
 
 	return response;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java
index 25cb87e..a6cc769 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java
@@ -96,7 +96,7 @@
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add (fixedHandle, handle);
 	}
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
index 2f1d5c4..576cda7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
@@ -19,6 +19,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 
 /**
  * Instances of the receiver represent a selectable user interface object
@@ -144,7 +145,7 @@
 
 	handle = OS.g_object_new(display.gtk_fixed_get_type(), 0);
 	if (handle == 0) error(SWT.ERROR_NO_HANDLES);
-	if (!GTK.GTK4) GTK.gtk_widget_set_has_window(handle, true);
+	if (!GTK.GTK4) GTK3.gtk_widget_set_has_window(handle, true);
 	GTK.gtk_widget_set_can_focus(handle, true);
 
 	if ((style & SWT.VERTICAL) != 0) {
@@ -483,7 +484,7 @@
 @Override
 void hookEvents () {
 	super.hookEvents ();
-	GTK.gtk_widget_add_events (handle, GDK.GDK_POINTER_MOTION_HINT_MASK);
+	GTK3.gtk_widget_add_events (handle, GDK.GDK_POINTER_MOTION_HINT_MASK);
 }
 
 @Override
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scale.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scale.java
index ea9e00d..bc6af88 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scale.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scale.java
@@ -143,7 +143,7 @@
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add (fixedHandle, handle);
 	}
 
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 c6cc144..538c23e 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
@@ -19,6 +19,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 import org.eclipse.swt.internal.gtk4.*;
 
 /**
@@ -348,7 +349,7 @@
 	checkWidget();
 
 	int[] slider_start = new int[1], slider_end = new int[1];
-	long rangeHandle = GTK.GTK4 ? GTK.gtk_widget_get_first_child(handle) : handle;
+	long rangeHandle = GTK.GTK4 ? GTK4.gtk_widget_get_first_child(handle) : handle;
 	GTK.gtk_range_get_slider_range(rangeHandle, slider_start, slider_end);
 
 	int x, y, width, height;
@@ -369,12 +370,12 @@
 	Rectangle rect = new Rectangle(x, y, width, height);
 	if (GTK.GTK4) {
 		double[] origin_x = new double[1], origin_y = new double[1];
-		boolean success = GTK.gtk_widget_translate_coordinates(parent.scrolledHandle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
+		boolean success = GTK4.gtk_widget_translate_coordinates(parent.scrolledHandle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
 		if (success) {
 			rect.x += origin_x[0];
 			rect.y += origin_y[0];
 		}
-		success = GTK.gtk_widget_translate_coordinates(parent.handle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
+		success = GTK4.gtk_widget_translate_coordinates(parent.handle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
 		if (success) {
 			rect.x -= origin_x[0];
 			rect.y -= origin_y[0];
@@ -424,13 +425,13 @@
 	boolean hasB = false, hasB2 = false, hasF = false, hasF2 = false;
 	if (!GTK.GTK4) {
 		int[] has_stepper = new int[1];
-		GTK.gtk_widget_style_get(handle, OS.has_backward_stepper, has_stepper, 0);
+		GTK3.gtk_widget_style_get(handle, OS.has_backward_stepper, has_stepper, 0);
 		hasB = has_stepper[0] != 0;
-		GTK.gtk_widget_style_get(handle, OS.has_secondary_backward_stepper, has_stepper, 0);
+		GTK3.gtk_widget_style_get(handle, OS.has_secondary_backward_stepper, has_stepper, 0);
 		hasB2 = has_stepper[0] != 0;
-		GTK.gtk_widget_style_get(handle, OS.has_forward_stepper, has_stepper, 0);
+		GTK3.gtk_widget_style_get(handle, OS.has_forward_stepper, has_stepper, 0);
 		hasF = has_stepper[0] != 0;
-		GTK.gtk_widget_style_get(handle, OS.has_secondary_forward_stepper, has_stepper, 0);
+		GTK3.gtk_widget_style_get(handle, OS.has_secondary_forward_stepper, has_stepper, 0);
 		hasF2 = has_stepper[0] != 0;
 	}
 
@@ -447,7 +448,7 @@
 		if (hasF) height -= stepperSize;
 		if (height < 0) {
 			int[] slider_start = new int[1], slider_end = new int[1];
-			long rangeHandle = GTK.GTK4 ? GTK.gtk_widget_get_first_child(handle) : handle;
+			long rangeHandle = GTK.GTK4 ? GTK4.gtk_widget_get_first_child(handle) : handle;
 			GTK.gtk_range_get_slider_range(rangeHandle, slider_start, slider_end);
 			y = slider_start[0];
 			height = 0;
@@ -463,7 +464,7 @@
 		height = allocation.height;
 		if (width < 0) {
 			int[] slider_start = new int[1], slider_end = new int[1];
-			long rangeHandle = GTK.GTK4 ? GTK.gtk_widget_get_first_child(handle) : handle;
+			long rangeHandle = GTK.GTK4 ? GTK4.gtk_widget_get_first_child(handle) : handle;
 			GTK.gtk_range_get_slider_range(rangeHandle, slider_start, slider_end);
 			x = slider_start[0];
 			width = 0;
@@ -473,12 +474,12 @@
 	Rectangle rect = new Rectangle(x, y, width, height);
 	if (GTK.GTK4) {
 		double[] origin_x = new double[1], origin_y = new double[1];
-		boolean success = GTK.gtk_widget_translate_coordinates(parent.scrolledHandle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
+		boolean success = GTK4.gtk_widget_translate_coordinates(parent.scrolledHandle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
 		if (success) {
 			rect.x += origin_x[0];
 			rect.y += origin_y[0];
 		}
-		success = GTK.gtk_widget_translate_coordinates(parent.handle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
+		success = GTK4.gtk_widget_translate_coordinates(parent.handle, parent.getShell().shellHandle, 0, 0, origin_x, origin_y);
 		if (success) {
 			rect.x -= origin_x[0];
 			rect.y -= origin_y[0];
@@ -608,7 +609,7 @@
 		//TODO: GTK4 change-value moved to gtk_scroll_child in Composite, event-after
 
 		long clickGesture = GTK4.gtk_gesture_click_new();
-		GTK.gtk_widget_add_controller(handle, clickGesture);
+		GTK4.gtk_widget_add_controller(handle, clickGesture);
 		OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 	} else {
 		OS.g_signal_connect_closure (handle, OS.change_value, display.getClosure (CHANGE_VALUE), false);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
index d3163b6..89b499d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
@@ -513,12 +513,12 @@
 	} else {
 		if (GTK.GTK4) {
 			double[] destX = new double[1], destY = new double[1];
-			GTK.gtk_widget_translate_coordinates(paintHandle, topHandle, x, y, destX, destY);
+			GTK4.gtk_widget_translate_coordinates(paintHandle, topHandle, x, y, destX, destY);
 			rect.x = (int)destX[0];
 			rect.y = (int)destY[0];
 		} else {
 			int[] destX = new int[1], destY = new int[1];
-			GTK.gtk_widget_translate_coordinates(paintHandle, topHandle, x, y, destX, destY);
+			GTK3.gtk_widget_translate_coordinates(paintHandle, topHandle, x, y, destX, destY);
 			rect.x = destX[0];
 			rect.y = destY[0];
 		}
@@ -619,7 +619,7 @@
 	gtk_widget_get_preferred_size (scrollBarHandle, requisition);
 	int [] padding = new int [1];
 	// Only GTK3 needs this, GTK4 has the size built-in via gtk_widget_get_preferred_size()
-	if (!GTK.GTK4) GTK.gtk_widget_style_get(scrolledHandle, OS.scrollbar_spacing, padding, 0);
+	if (!GTK.GTK4) GTK3.gtk_widget_style_get(scrolledHandle, OS.scrollbar_spacing, padding, 0);
 	int spacing = padding[0];
 	return new Point(requisition.width + spacing, requisition.height + spacing);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
index 569219f..36e226b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
@@ -943,23 +943,23 @@
 	if (GTK.GTK4) {
 		OS.g_signal_connect_closure (shellHandle, OS.close_request, display.getClosure (CLOSE_REQUEST), false);
 		long keyController = GTK4.gtk_event_controller_key_new();
-		GTK.gtk_widget_add_controller(shellHandle, keyController);
+		GTK4.gtk_widget_add_controller(shellHandle, keyController);
 		GTK.gtk_event_controller_set_propagation_phase(keyController, GTK.GTK_PHASE_TARGET);
 		OS.g_signal_connect (keyController, OS.key_pressed, display.keyPressReleaseProc, KEY_PRESSED);
 
 		long focusController = GTK4.gtk_event_controller_focus_new();
-		GTK.gtk_widget_add_controller(shellHandle, focusController);
+		GTK4.gtk_widget_add_controller(shellHandle, focusController);
 		OS.g_signal_connect (focusController, OS.enter, display.focusProc, FOCUS_IN);
 		OS.g_signal_connect (focusController, OS.leave, display.focusProc, FOCUS_OUT);
 
 		long enterLeaveController = GTK4.gtk_event_controller_motion_new();
-		GTK.gtk_widget_add_controller(shellHandle, enterLeaveController);
+		GTK4.gtk_widget_add_controller(shellHandle, enterLeaveController);
 
 		long enterMotionAddress = display.enterMotionScrollCallback.getAddress();
 		OS.g_signal_connect (enterLeaveController, OS.enter, enterMotionAddress, ENTER);
 		if (isCustomResize()) {
 			long motionController = GTK4.gtk_event_controller_motion_new();
-			GTK.gtk_widget_add_controller(shellHandle, motionController);
+			GTK4.gtk_widget_add_controller(shellHandle, motionController);
 			GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
 			OS.g_signal_connect (motionController, OS.motion, enterMotionAddress, MOTION);
@@ -977,7 +977,7 @@
 	if (isCustomResize ()) {
 		if (!GTK.GTK4) {
 			int mask = GDK.GDK_POINTER_MOTION_MASK | GDK.GDK_BUTTON_RELEASE_MASK | GDK.GDK_BUTTON_PRESS_MASK |  GDK.GDK_ENTER_NOTIFY_MASK | GDK.GDK_LEAVE_NOTIFY_MASK;
-			GTK.gtk_widget_add_events (shellHandle, mask);
+			GTK3.gtk_widget_add_events (shellHandle, mask);
 			OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [MOTION_NOTIFY_EVENT], 0, display.getClosure (MOTION_NOTIFY_EVENT), false);
 			OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, display.getClosure (LEAVE_NOTIFY_EVENT), false);
 
@@ -1130,7 +1130,7 @@
 		if (GTK.GTK4) {
 			double[] window_offset_x = new double[1], window_offset_y = new double[1];
 
-			boolean validTranslation = GTK.gtk_widget_translate_coordinates(vboxHandle, shellHandle, 0, 0, window_offset_x, window_offset_y);
+			boolean validTranslation = GTK4.gtk_widget_translate_coordinates(vboxHandle, shellHandle, 0, 0, window_offset_x, window_offset_y);
 			if (validTranslation && !isMappedToPopup()) {
 				allocation.x += window_offset_x[0];
 				allocation.y += window_offset_y[0];
@@ -1138,7 +1138,7 @@
 		} else {
 			int [] dest_x = new int[1];
 			int [] dest_y = new int[1];
-			GTK.gtk_widget_translate_coordinates(vboxHandle, shellHandle, 0, 0, dest_x, dest_y);
+			GTK3.gtk_widget_translate_coordinates(vboxHandle, shellHandle, 0, 0, dest_x, dest_y);
 			if (dest_x[0] != -1 && dest_y[0] != -1 && !isMappedToPopup()) {
 				allocation.x += dest_x[0];
 				allocation.y += dest_y[0];
@@ -1175,7 +1175,7 @@
 		long display = GDK.gdk_display_get_default();
 		composited = GDK.gdk_display_is_composited(display);
 	} else {
-		long screen = GTK.gtk_widget_get_screen(shellHandle);
+		long screen = GTK3.gtk_widget_get_screen(shellHandle);
 		composited = GDK.gdk_screen_is_composited(screen);
 	}
 	if (composited) {
@@ -1630,7 +1630,7 @@
 
 			if ((state[0] & GDK.GDK_BUTTON1_MASK) == 0) {
 				if (GTK.GTK4) {
-					GTK.gtk_widget_set_cursor (shellHandle, 0);
+					GTK4.gtk_widget_set_cursor (shellHandle, 0);
 				} else {
 					long window = gtk_widget_get_window (shellHandle);
 					GDK.gdk_window_set_cursor (window, 0);
@@ -1747,7 +1747,7 @@
 				if (mode != display.resizeMode) {
 					long cursor = display.getSystemCursor(mode).handle;
 					if (GTK.GTK4) {
-						GTK.gtk_widget_set_cursor (shellHandle, cursor);
+						GTK4.gtk_widget_set_cursor (shellHandle, cursor);
 					} else {
 						long window = gtk_widget_get_window (shellHandle);
 						GDK.gdk_window_set_cursor (window, cursor);
@@ -2199,7 +2199,7 @@
 		long display = GDK.gdk_display_get_default();
 		composited = GDK.gdk_display_is_composited(display);
 	} else {
-		long screen = GTK.gtk_widget_get_screen(shellHandle);
+		long screen = GTK3.gtk_widget_get_screen(shellHandle);
 		composited = GDK.gdk_screen_is_composited(screen);
 	}
 	if (composited) {
@@ -2934,7 +2934,7 @@
 		mapped = true;
 
 		if ((style & mask) != 0) {
-			gdk_pointer_ungrab (GTK.gtk_widget_get_window (shellHandle), GDK.GDK_CURRENT_TIME);
+			gdk_pointer_ungrab (GTK3.gtk_widget_get_window (shellHandle), GDK.GDK_CURRENT_TIME);
 		}
 		opened = true;
 		if (!moved) {
@@ -2999,7 +2999,7 @@
 		}
 
 		if (GTK.GTK4) {
-			for (long child = GTK.gtk_widget_get_first_child(shellHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+			for (long child = GTK4.gtk_widget_get_first_child(shellHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 				GTK.gtk_widget_unparent(child);
 			}
 		} else {
@@ -3328,7 +3328,7 @@
 			 * root coordinates. Ideas include using the popup GdkSurface which allows you to get
 			 * parent relative x and y coords. */
 		} else {
-			GDK.gdk_window_get_root_origin(GTK.gtk_widget_get_window(shellHandle), x, y);
+			GDK.gdk_window_get_root_origin(GTK3.gtk_widget_get_window(shellHandle), x, y);
 		}
 	}
 	GtkAllocation allocation = new GtkAllocation ();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java
index e768e8e..31a880a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Slider.java
@@ -19,6 +19,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.gtk.*;
 import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * Instances of this class are selectable user interface
@@ -180,7 +181,7 @@
 	 * On GTK4, the GtkRange widget is a child of the GtkScrollbar
 	 * On GTK3, GtkRange is the base class for GtkScrollbar
 	 */
-	rangeHandle = GTK.GTK4 ? GTK.gtk_widget_get_first_child(handle) : handle;
+	rangeHandle = GTK.GTK4 ? GTK4.gtk_widget_get_first_child(handle) : handle;
 
 	/*
 	* Bug in GTK. In GTK 2.10, the buttons on either end of
@@ -197,7 +198,7 @@
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add(fixedHandle, handle);
 	}
 }
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 c80aa58..63924ad 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
@@ -285,9 +285,9 @@
 	 */
 	if (!GTK.GTK4) {
 		int [] property = new int [1];
-		GTK.gtk_widget_style_get (handle, OS.interior_focus, property, 0);
+		GTK3.gtk_widget_style_get (handle, OS.interior_focus, property, 0);
 		if (property [0] == 0) {
-			GTK.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
+			GTK3.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
 			xborder += property [0];
 			yborder += property [0];
 		}
@@ -313,8 +313,8 @@
 public void copy () {
 	checkWidget ();
 	if (GTK.GTK4) {
-		long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
-		GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
+		long textHandle = GTK4.gtk_widget_get_first_child(entryHandle);
+		GTK4.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 	} else {
 		GTK3.gtk_editable_copy_clipboard(handle);
 	}
@@ -332,9 +332,9 @@
 
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
-		entryHandle = GTK.gtk_widget_get_first_child(handle);
+		entryHandle = GTK4.gtk_widget_get_first_child(handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add (fixedHandle, handle);
 	}
 	GTK.gtk_editable_set_editable (GTK.GTK4 ? entryHandle : handle, (style & SWT.READ_ONLY) == 0);
@@ -360,8 +360,8 @@
 public void cut () {
 	checkWidget ();
 	if (GTK.GTK4) {
-		long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
-		GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
+		long textHandle = GTK4.gtk_widget_get_first_child(entryHandle);
+		GTK4.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 	} else {
 		GTK3.gtk_editable_cut_clipboard(handle);
 	}
@@ -834,7 +834,7 @@
 
 	if (GTK.GTK4) {
 		/* GtkText signals */
-		long textHandle = GTK.gtk_widget_get_first_child(handle);
+		long textHandle = GTK4.gtk_widget_get_first_child(handle);
 		OS.g_signal_connect_closure(textHandle, OS.activate, display.getClosure(ACTIVATE), false);
 	} else {
 		/* GtkEntry signals */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
index 0655417..fad04c8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
@@ -261,7 +261,7 @@
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		GTK3.gtk_container_add (fixedHandle, handle);
 	}
 
@@ -400,7 +400,7 @@
 			long parentHandle = tabItem.pageHandle;
 
 			if (GTK.GTK4) {
-				for (long child = GTK.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+				for (long child = GTK4.gtk_widget_get_first_child(parentHandle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 					Widget childWidget = display.getWidget(child);
 					if (childWidget != null && childWidget instanceof Control && childWidget != this) {
 						children[childrenCount] = (Control)childWidget;
@@ -460,7 +460,7 @@
 	if (!(0 <= index && index < getItemCount())) error (SWT.ERROR_INVALID_RANGE);
 
 	if (GTK.GTK4) {
-		long child = GTK.gtk_widget_get_first_child(handle);
+		long child = GTK4.gtk_widget_get_first_child(handle);
 		if (child == 0) error(SWT.ERROR_CANNOT_GET_ITEM);
 	} else {
 		long list = GTK3.gtk_container_get_children (handle);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
index 0370a0c..53886f1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
@@ -239,7 +239,7 @@
 	if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.getClosure (MNEMONIC_ACTIVATE), false);
 	if (GTK.GTK4) {
 		long motionController = GTK4.gtk_event_controller_motion_new();
-		GTK.gtk_widget_add_controller(handle, motionController);
+		GTK4.gtk_widget_add_controller(handle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
 		long enterMotionAddress = display.enterMotionScrollCallback.getAddress();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
index f427288..996670b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
@@ -648,7 +648,7 @@
 	if (GTK.GTK4) {
 		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
@@ -3795,7 +3795,7 @@
 		// TODO: implement connectFixedHandleDraw with the "snapshot" signal
 	} else {
 		long parentGdkWindow = eventWindow ();
-		GTK.gtk_widget_set_parent_window (child.topHandle(), parentGdkWindow);
+		GTK3.gtk_widget_set_parent_window (child.topHandle(), parentGdkWindow);
 		hasChildren = true;
 		connectFixedHandleDraw();
 	}
@@ -4238,7 +4238,7 @@
 					Control control = findBackgroundControl ();
 					if (control != null) {
 						long window = GTK.gtk_tree_view_get_bin_window (handle);
-						if (window == GTK.gtk_widget_get_window(handle)) {
+						if (window == GTK3.gtk_widget_get_window(handle)) {
 							GdkRectangle rect = new GdkRectangle ();
 							GDK.gdk_cairo_get_clip_rectangle (arg0, rect);
 							drawBackground (control, window, arg0, rect.x, rect.y, rect.width, rect.height);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java
index bf0e0d5..af503b3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableItem.java
@@ -18,6 +18,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 
 /**
  * Instances of this class represent a selectable user interface object
@@ -339,7 +340,7 @@
 			GTK.gtk_widget_get_allocation(image, allocation);
 			rect.x += allocation.width + TreeItem.EXPANDER_EXTRA_PADDING;
 		} else {
-			GTK.gtk_widget_style_get (parentHandle, OS.expander_size, buffer, 0);
+			GTK3.gtk_widget_style_get (parentHandle, OS.expander_size, buffer, 0);
 			rect.x += buffer [0] + TreeItem.EXPANDER_EXTRA_PADDING;
 		}
 	}
@@ -350,7 +351,7 @@
 		GTK.gtk_widget_get_allocation(separator, allocation);
 		horizontalSeparator = allocation.height;
 	} else {
-		GTK.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
+		GTK3.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
 		horizontalSeparator = buffer[0];
 	}
 	rect.x += horizontalSeparator;
@@ -797,7 +798,7 @@
 			GTK.gtk_widget_get_allocation(image, allocation);
 			rect.x += allocation.width + TreeItem.EXPANDER_EXTRA_PADDING;
 		} else {
-			GTK.gtk_widget_style_get (parentHandle, OS.expander_size, buffer, 0);
+			GTK3.gtk_widget_style_get (parentHandle, OS.expander_size, buffer, 0);
 			rect.x += buffer [0] + TreeItem.EXPANDER_EXTRA_PADDING;
 		}
 	}
@@ -808,7 +809,7 @@
 		GTK.gtk_widget_get_allocation(separator, allocation);
 		horizontalSeparator = allocation.height;
 	} else {
-		GTK.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
+		GTK3.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
 		horizontalSeparator = buffer[0];
 	}
 	rect.x += horizontalSeparator;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
index 8979767..31d4d34 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
@@ -236,10 +236,10 @@
 
 		if (GTK.GTK4) {
 			OS.swt_fixed_add(fixedHandle, handle);
-			textHandle = GTK.gtk_widget_get_first_child(handle);
+			textHandle = GTK4.gtk_widget_get_first_child(handle);
 			bufferHandle = GTK4.gtk_entry_get_buffer(handle);
 		} else {
-			GTK.gtk_widget_set_has_window(fixedHandle, true);
+			GTK3.gtk_widget_set_has_window(fixedHandle, true);
 			GTK3.gtk_container_add(fixedHandle, handle);
 		}
 
@@ -701,9 +701,9 @@
 	 */
 	if (!GTK.GTK4) {
 		int [] property = new int [1];
-		GTK.gtk_widget_style_get (handle, OS.interior_focus, property, 0);
+		GTK3.gtk_widget_style_get (handle, OS.interior_focus, property, 0);
 		if (property [0] == 0) {
-			GTK.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
+			GTK3.gtk_widget_style_get (handle, OS.focus_line_width, property, 0);
 			xborder += property [0];
 			yborder += property [0];
 		}
@@ -731,7 +731,7 @@
 	checkWidget ();
 	if ((style & SWT.SINGLE) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
+			GTK4.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 		} else {
 			GTK3.gtk_editable_copy_clipboard(handle);
 		}
@@ -759,7 +759,7 @@
 	checkWidget ();
 	if ((style & SWT.SINGLE) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
+			GTK4.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 		} else {
 			GTK3.gtk_editable_cut_clipboard(handle);
 		}
@@ -2092,7 +2092,7 @@
 	checkWidget ();
 	if ((style & SWT.SINGLE) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_widget_activate_action(textHandle, OS.action_paste_clipboard, null);
+			GTK4.gtk_widget_activate_action(textHandle, OS.action_paste_clipboard, null);
 		} else {
 			GTK3.gtk_editable_paste_clipboard (handle);
 		}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolBar.java
index 49bd4a8..0d3c1f8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolBar.java
@@ -21,6 +21,7 @@
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
 import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * Instances of this class support the layout of selectable
@@ -136,7 +137,7 @@
 		handle = GTK.gtk_box_new(GTK.GTK_ORIENTATION_HORIZONTAL, 0);
 		GTK.gtk_widget_add_css_class(handle, Converter.javaStringToCString("toolbar"));
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		handle = GTK3.gtk_toolbar_new ();
 	}
 
@@ -344,7 +345,7 @@
 
 	int itemCount = 0;
 	if (GTK.GTK4) {
-		for (long child = GTK.gtk_widget_get_first_child(handle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(handle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			itemCount++;
 		}
 	} else {
@@ -381,7 +382,7 @@
 ToolItem[] _getItems () {
 	if (GTK.GTK4) {
 		ArrayList<ToolItem> childrenList = new ArrayList<>();
-		for (long child = GTK.gtk_widget_get_first_child(handle); child != 0; child = GTK.gtk_widget_get_next_sibling(child)) {
+		for (long child = GTK4.gtk_widget_get_first_child(handle); child != 0; child = GTK4.gtk_widget_get_next_sibling(child)) {
 			Widget childWidget = display.getWidget(child);
 			if (childWidget != null) {
 				childrenList.add((ToolItem)childWidget);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
index 81cec09..c6cb28a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java
@@ -227,7 +227,7 @@
 				GTK4.gtk_box_append(handle, button);
 				GTK4.gtk_box_append(handle, menuButton);
 
-				arrowHandle = GTK.gtk_widget_get_first_child(menuButton);
+				arrowHandle = GTK4.gtk_widget_get_first_child(menuButton);
 				GTK.gtk_menu_button_set_use_underline(menuButton, true);
 			} else {
 				handle = GTK3.gtk_menu_tool_button_new(0, null);
@@ -840,14 +840,14 @@
 	 * such as button-press, enter-notify to it. The fix is to assign
 	 * the listener to child (GtkButton) of the tool-item.
 	 */
-	eventHandle = GTK.GTK4 ? GTK.gtk_widget_get_first_child(handle) : GTK3.gtk_bin_get_child(handle);
+	eventHandle = GTK.GTK4 ? GTK4.gtk_widget_get_first_child(handle) : GTK3.gtk_bin_get_child(handle);
 	if ((style & SWT.DROP_DOWN) != 0) {
 		if (GTK.GTK4) {
-			eventHandle = GTK.gtk_widget_get_first_child(handle);
+			eventHandle = GTK4.gtk_widget_get_first_child(handle);
 			if (arrowHandle != 0) {
 				long clickGesture = GTK4.gtk_gesture_click_new();
 				OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
-				GTK.gtk_widget_add_controller(arrowHandle, clickGesture);
+				GTK4.gtk_widget_add_controller(arrowHandle, clickGesture);
 			}
 		} else {
 			long list = GTK3.gtk_container_get_children(eventHandle);
@@ -858,14 +858,14 @@
 
 	if (GTK.GTK4) {
 		long focusController = GTK4.gtk_event_controller_focus_new();
-		GTK.gtk_widget_add_controller(eventHandle, focusController);
+		GTK4.gtk_widget_add_controller(eventHandle, focusController);
 		GTK.gtk_event_controller_set_propagation_phase(focusController, GTK.GTK_PHASE_TARGET);
 
 		OS.g_signal_connect (focusController, OS.enter, display.focusProc, FOCUS_IN);
 		OS.g_signal_connect (focusController, OS.leave, display.focusProc, FOCUS_OUT);
 
 		long motionController = GTK4.gtk_event_controller_motion_new();
-		GTK.gtk_widget_add_controller(eventHandle, motionController);
+		GTK4.gtk_widget_add_controller(eventHandle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
 		OS.g_signal_connect (motionController, OS.enter, display.enterMotionScrollProc, ENTER);
@@ -893,11 +893,11 @@
 		GDK.GDK_ENTER_NOTIFY_MASK | GDK.GDK_LEAVE_NOTIFY_MASK |
 		GDK.GDK_KEY_PRESS_MASK | GDK.GDK_KEY_RELEASE_MASK |
 		GDK.GDK_FOCUS_CHANGE_MASK;
-	GTK.gtk_widget_add_events (eventHandle, mask);
+	GTK3.gtk_widget_add_events (eventHandle, mask);
 	if (GTK.GTK4) {
 		//TODO: event-after
 		long clickController = GTK4.gtk_gesture_click_new();
-		GTK.gtk_widget_add_controller(eventHandle, clickController);
+		GTK4.gtk_widget_add_controller(eventHandle, clickController);
 		OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 	} else {
 		OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.getClosure (BUTTON_PRESS_EVENT), false);
@@ -1509,7 +1509,7 @@
 		} else if (index < 0) {
 			GTK4.gtk_box_append(parent.handle, handle);
 		} else {
-			for (long sibling = GTK.gtk_widget_get_first_child(parent.handle); sibling != 0; sibling = GTK.gtk_widget_get_next_sibling(sibling)) {
+			for (long sibling = GTK4.gtk_widget_get_first_child(parent.handle); sibling != 0; sibling = GTK4.gtk_widget_get_next_sibling(sibling)) {
 				if (index == 1) {
 					GTK4.gtk_box_insert_child_after(parent.handle, handle, sibling);
 					break;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
index d584304..f4fc9ea 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
@@ -282,7 +282,7 @@
 	GTK.gtk_widget_realize(handle);
 	Region region = new Region (display);
 	region.add(DPIUtil.autoScaleDown(polyline));
-	GTK.gtk_widget_shape_combine_region (handle, region.handle);
+	GTK3.gtk_widget_shape_combine_region (handle, region.handle);
 	region.dispose ();
 }
 
@@ -335,7 +335,7 @@
 			if (GTK.GTK4) {
 				OS.g_object_unref(topHandle);
 			} else {
-				GTK.gtk_widget_destroy(topHandle);
+				GTK3.gtk_widget_destroy(topHandle);
 			}
 		} else {
 			OS.g_object_unref(topHandle);
@@ -602,10 +602,10 @@
 
 		if (GTK.GTK4) {
 			long clickController = GTK4.gtk_gesture_click_new();
-			GTK.gtk_widget_add_controller(handle, clickController);
+			GTK4.gtk_widget_add_controller(handle, clickController);
 			OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 		} else {
-			GTK.gtk_widget_add_events(handle, GDK.GDK_BUTTON_PRESS_MASK);
+			GTK3.gtk_widget_add_events(handle, GDK.GDK_BUTTON_PRESS_MASK);
 			OS.g_signal_connect_closure(handle, OS.button_press_event, display.getClosure (BUTTON_PRESS_EVENT), false);
 		}
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
index c56c9bb..eed3de7 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
@@ -354,7 +354,7 @@
 	if (gdkResource == 0) return;
 
 	if (overlay == 0) return;
-	GTK.gtk_widget_shape_combine_region (overlay, 0);
+	GTK3.gtk_widget_shape_combine_region (overlay, 0);
 
 	// Bug 498217.
 	// As of Gtk 3.9.1, Commit a60ccd3672467efb454b121993febc36f33cbc79, off-screen GDK windows are not processed.
@@ -420,14 +420,14 @@
 		setTrackerBackground(false);
 	}
 
-	GTK.gtk_widget_shape_combine_region (overlay, region);
+	GTK3.gtk_widget_shape_combine_region (overlay, region);
 	Cairo.cairo_region_destroy (region);
 	if (GTK.GTK4) {
-		long overlaySurface = GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native (overlay));
+		long overlaySurface = GTK4.gtk_native_get_surface(GTK4.gtk_widget_get_native (overlay));
 		GDK.gdk_surface_hide (overlaySurface);
 		/* TODO: GTK does not provide a gdk_surface_show, probably will require use of the present api */
 	} else {
-		long overlayWindow = GTK.gtk_widget_get_window (overlay);
+		long overlayWindow = GTK3.gtk_widget_get_window (overlay);
 		GDK.gdk_window_hide (overlayWindow);
 		GDK.gdk_window_show (overlayWindow);
 	}
@@ -852,7 +852,7 @@
 	if (parent != null) GTK.gtk_window_set_transient_for(overlay, parent.topHandle());
 	GTK.gtk_widget_realize (overlay);
 	if (!GTK.GTK4) {
-		long overlayWindow = GTK.gtk_widget_get_window (overlay);
+		long overlayWindow = GTK3.gtk_widget_get_window (overlay);
 		GDK.gdk_window_set_override_redirect (overlayWindow, true);
 	}
 	setTrackerBackground(true);
@@ -884,7 +884,7 @@
 	}
 	ungrab ();
 	if (overlay != 0) {
-		GTK.gtk_widget_destroy (overlay);
+		GTK3.gtk_widget_destroy (overlay);
 		overlay = 0;
 	}
 	window = 0;
@@ -928,8 +928,8 @@
 		//GDK.gdk_surface_set_opaque_region(context, region);
 		//GDK.gdk_surface_set_input_region(context, region);
 	} else {
-		GTK.gtk_widget_shape_combine_region (overlay, region);
-		GTK.gtk_widget_input_shape_combine_region (overlay, region);
+		GTK3.gtk_widget_shape_combine_region (overlay, region);
+		GTK3.gtk_widget_input_shape_combine_region (overlay, region);
 	}
 
 	Cairo.cairo_region_destroy (region);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
index eb9a18f..c522a23 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
@@ -459,7 +459,7 @@
 				GTK.gtk_widget_get_allocation(image, allocation);
 				width += allocation.width + TreeItem.EXPANDER_EXTRA_PADDING;
 			} else {
-				GTK.gtk_widget_style_get (handle, OS.expander_size, w, 0);
+				GTK3.gtk_widget_style_get (handle, OS.expander_size, w, 0);
 				width += w [0] + TreeItem.EXPANDER_EXTRA_PADDING;
 			}
 		}
@@ -469,7 +469,7 @@
 	 * to the size of the widget.
 	 */
 	if (!GTK.GTK4) {
-		GTK.gtk_widget_style_get(handle, OS.focus_line_width, w, 0);
+		GTK3.gtk_widget_style_get(handle, OS.focus_line_width, w, 0);
 		width += 2 * w [0];
 	}
 	long list = GTK.gtk_cell_layout_get_cells(column);
@@ -505,7 +505,7 @@
 		 * Grid line width is handled via CSS in GTK4.
 		 */
 		if (!GTK.GTK4) {
-			GTK.gtk_widget_style_get (handle, OS.grid_line_width, w, 0) ;
+			GTK3.gtk_widget_style_get (handle, OS.grid_line_width, w, 0) ;
 			width += 2 * w [0];
 		}
 	}
@@ -809,7 +809,7 @@
 	if (GTK.GTK4) {
 		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
-		GTK.gtk_widget_set_has_window(fixedHandle, true);
+		GTK3.gtk_widget_set_has_window(fixedHandle, true);
 		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
@@ -876,13 +876,13 @@
 
 	int[] keyval = new int[1];
 	GTK.gtk_accelerator_parse(Converter.javaStringToCString("Left"), keyval, null);
-	GTK.gtk_widget_class_add_binding_signal(GTK.GTK_WIDGET_GET_CLASS(handle), keyval[0], 0,
+	GTK4.gtk_widget_class_add_binding_signal(GTK.GTK_WIDGET_GET_CLASS(handle), keyval[0], 0,
 			Converter.javaStringToCString("expand-collapse-cursor-row"),
 			Converter.javaStringToCString("(bbb)"),
 			false, false, false);
 
 	GTK.gtk_accelerator_parse(Converter.javaStringToCString("Right"), keyval, null);
-	GTK.gtk_widget_class_add_binding_signal(GTK.GTK_WIDGET_GET_CLASS(handle), keyval[0], 0,
+	GTK4.gtk_widget_class_add_binding_signal(GTK.GTK_WIDGET_GET_CLASS(handle), keyval[0], 0,
 			Converter.javaStringToCString("expand-collapse-cursor-row"),
 			Converter.javaStringToCString("(bbb)"),
 			false, true, false);
@@ -3896,7 +3896,7 @@
 		// TODO: implement connectFixedHandleDraw with the "snapshot" signal
 	} else {
 		long parentGdkWindow = eventWindow ();
-		GTK.gtk_widget_set_parent_window (child.topHandle(), parentGdkWindow);
+		GTK3.gtk_widget_set_parent_window (child.topHandle(), parentGdkWindow);
 		hasChildren = true;
 		connectFixedHandleDraw();
 	}
@@ -4249,7 +4249,7 @@
 					Control control = findBackgroundControl ();
 					if (control != null) {
 						long window = GTK.gtk_tree_view_get_bin_window (handle);
-						if (window == GTK.gtk_widget_get_window(handle)) {
+						if (window == GTK3.gtk_widget_get_window(handle)) {
 							GdkRectangle rect = new GdkRectangle ();
 							GDK.gdk_cairo_get_clip_rectangle (arg0, rect);
 							drawBackground (control, window, arg0, rect.x, rect.y, rect.width, rect.height);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
index 2922fcd..7bd87f6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
@@ -433,7 +433,7 @@
 
 	if (GTK.GTK4) {
 		 long clickController = GTK4.gtk_gesture_click_new();
-		 GTK.gtk_widget_add_controller(buttonHandle, clickController);
+		 GTK4.gtk_widget_add_controller(buttonHandle, clickController);
 		 GTK.gtk_event_controller_set_propagation_phase(clickController, GTK.GTK_PHASE_CAPTURE);
 		 OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 	} else {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
index 4e2700c..2ac1bc0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeItem.java
@@ -18,6 +18,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 
 /**
  * Instances of this class represent a selectable user interface object
@@ -494,7 +495,7 @@
 		GTK.gtk_widget_get_allocation(separator, allocation);
 		horizontalSeparator = allocation.height;
 	} else {
-		GTK.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
+		GTK3.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
 		horizontalSeparator = buffer[0];
 	}
 	rect.x += horizontalSeparator;
@@ -971,7 +972,7 @@
 		GTK.gtk_widget_get_allocation(separator, allocation);
 		horizontalSeparator = allocation.height;
 	} else {
-		GTK.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
+		GTK3.gtk_widget_style_get (parentHandle, OS.horizontal_separator, buffer, 0);
 		horizontalSeparator = buffer[0];
 	}
 	rect.x += horizontalSeparator;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index d35cfcb..787379a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
@@ -496,7 +496,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_widget_unparent(topHandle);
 		} else {
-			GTK.gtk_widget_destroy(topHandle);
+			GTK3.gtk_widget_destroy(topHandle);
 		}
 	}
 }
@@ -1743,7 +1743,7 @@
 	} else {
 		// gtk_widget_override_font() copies the fields from 'fontDescription'
 		// and does not remember the pointer passed to it.
-		GTK.gtk_widget_override_font(widget, fontDescription);
+		GTK3.gtk_widget_override_font(widget, fontDescription);
 		long context = GTK.gtk_widget_get_style_context(widget);
 		GTK.gtk_style_context_invalidate(context);
 	}
@@ -1996,12 +1996,12 @@
 
 long gtk_widget_get_window (long widget){
 	GTK.gtk_widget_realize(widget);
-	return GTK.gtk_widget_get_window (widget);
+	return GTK3.gtk_widget_get_window (widget);
 }
 
 long gtk_widget_get_surface (long widget){
 	GTK.gtk_widget_realize(widget);
-	return GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native (widget));
+	return GTK4.gtk_native_get_surface(GTK4.gtk_widget_get_native (widget));
 }
 
 void gdk_window_get_size (long drawable, int[] width, int[] height) {