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

- GtkWindow, GtkMenu/GtkMenuItem, GtkSelectionData,
GtkToolBar/GtkToolBarItems, GtkShortcut, GtkIconTheme, GtkIconPaintable,
GtkPopoverMenu, GtkText, GtkNative

Change-Id: I591890882e3d5e43d11c1aa17bd9549ba35396ba
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/179896
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 cb05eb1..6fa9d35 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.gtk4.*;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.swt.widgets.Composite;
 
@@ -191,7 +192,7 @@
 
 					long xWindow;
 					if (GTK.GTK4) {
-						xWindow = GDK.gdk_x11_surface_get_xid(GTK.gtk_native_get_surface (GTK.gtk_widget_get_native(shell.handle)));
+						xWindow = GDK.gdk_x11_surface_get_xid(GTK4.gtk_native_get_surface (GTK.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)));
 					}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java
index fa57a8d..b5e9e18 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java
@@ -303,12 +303,12 @@
 	}
 	if (selection_data == 0) return null;
 	TransferData tdata = new TransferData();
-	tdata.type = GTK.gtk_selection_data_get_data_type(selection_data);
-	tdata.pValue = GTK.gtk_selection_data_get_data(selection_data);
-	tdata.length = GTK.gtk_selection_data_get_length(selection_data);
-	tdata.format = GTK.gtk_selection_data_get_format(selection_data);
+	tdata.type = GTK3.gtk_selection_data_get_data_type(selection_data);
+	tdata.pValue = GTK3.gtk_selection_data_get_data(selection_data);
+	tdata.length = GTK3.gtk_selection_data_get_length(selection_data);
+	tdata.format = GTK3.gtk_selection_data_get_format(selection_data);
 	Object result = transfer.nativeToJava(tdata);
-	GTK.gtk_selection_data_free(selection_data);
+	GTK3.gtk_selection_data_free(selection_data);
 	return result;
 }
 
@@ -582,15 +582,15 @@
 	long selection_data = gtk_clipboard_wait_for_contents(GTKPRIMARYCLIPBOARD, TARGET);
 	if (selection_data != 0) {
 		try {
-			int length = GTK.gtk_selection_data_get_length(selection_data);
-			int format = GTK.gtk_selection_data_get_format(selection_data);
-			long data = GTK.gtk_selection_data_get_data(selection_data);
+			int length = GTK3.gtk_selection_data_get_length(selection_data);
+			int format = GTK3.gtk_selection_data_get_format(selection_data);
+			long data = GTK3.gtk_selection_data_get_data(selection_data);
 			if (length != 0) {
 				types = new int[length * 8 / format];
 				C.memmove(types, data, length);
 			}
 		} finally {
-			GTK.gtk_selection_data_free(selection_data);
+			GTK3.gtk_selection_data_free(selection_data);
 		}
 	}
 	return types;
@@ -600,15 +600,15 @@
 	long selection_data  = gtk_clipboard_wait_for_contents(GTKCLIPBOARD, TARGET);
 	if (selection_data != 0) {
 		try {
-			int length = GTK.gtk_selection_data_get_length(selection_data);
-			int format = GTK.gtk_selection_data_get_format(selection_data);
-			long data = GTK.gtk_selection_data_get_data(selection_data);
+			int length = GTK3.gtk_selection_data_get_length(selection_data);
+			int format = GTK3.gtk_selection_data_get_format(selection_data);
+			long data = GTK3.gtk_selection_data_get_data(selection_data);
 			if (length != 0) {
 				types = new int[length * 8 / format];
 				C.memmove(types, data, length);
 			}
 		} finally {
-			GTK.gtk_selection_data_free(selection_data);
+			GTK3.gtk_selection_data_free(selection_data);
 		}
 	}
 	return types;
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 22ebc71..96eadb9 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
@@ -17,6 +17,7 @@
 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.*;
 
 class ClipboardProxy {
@@ -28,7 +29,7 @@
 	Object[] primaryClipboardData;
 	Transfer[] primaryClipboardDataTypes;
 
-	long clipboardOwner = GTK.GTK4 ? GTK.gtk_window_new() : GTK.gtk_window_new(GTK.GTK_WINDOW_TOPLEVEL);
+	long clipboardOwner = GTK.GTK4 ? GTK4.gtk_window_new() : GTK3.gtk_window_new(GTK.GTK_WINDOW_TOPLEVEL);
 
 	Display display;
 	Clipboard activeClipboard = null;
@@ -108,7 +109,7 @@
 	primaryClipboardDataTypes = null;
 	if (clipboardOwner != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_window_destroy(clipboardOwner);
+			GTK4.gtk_window_destroy(clipboardOwner);
 		} else {
 			GTK.gtk_widget_destroy(clipboardOwner);
 		}
@@ -122,7 +123,7 @@
  */
 long getFunc(long clipboard, long selection_data, long info, long user_data_or_owner){
 	if (selection_data == 0) return 0;
-	long target = GTK.gtk_selection_data_get_target(selection_data);
+	long target = GTK3.gtk_selection_data_get_target(selection_data);
 	TransferData tdata = new TransferData();
 	tdata.type = target;
 	Transfer[] types = (clipboard == Clipboard.GTKCLIPBOARD) ? clipboardDataTypes : primaryClipboardDataTypes;
@@ -139,7 +140,7 @@
 	if (tdata.format < 8 || tdata.format % 8 != 0) {
 		return 0;
 	}
-	GTK.gtk_selection_data_set(selection_data, tdata.type, tdata.format, tdata.pValue, tdata.length);
+	GTK3.gtk_selection_data_set(selection_data, tdata.type, tdata.format, tdata.pValue, tdata.length);
 	OS.g_free(tdata.pValue);
 	return 1;
 }
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 6169203..8643e3e 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
@@ -436,7 +436,7 @@
 	 */
 	long display;
 	if (GTK.GTK4) {
-		long surface = GTK.gtk_native_get_surface(GTK.gtk_widget_get_native (widget));
+		long surface = GTK4.gtk_native_get_surface(GTK.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));
@@ -510,10 +510,10 @@
 
 void dragGetData(long widget, long context, long selection_data,  int info, int time){
 	if (selection_data == 0) return;
-	int length = GTK.gtk_selection_data_get_length(selection_data);
-	int format = GTK.gtk_selection_data_get_format(selection_data);
-	long data = GTK.gtk_selection_data_get_data(selection_data);
-	long target = GTK.gtk_selection_data_get_target(selection_data);
+	int length = GTK3.gtk_selection_data_get_length(selection_data);
+	int format = GTK3.gtk_selection_data_get_format(selection_data);
+	long data = GTK3.gtk_selection_data_get_data(selection_data);
+	long target = GTK3.gtk_selection_data_get_target(selection_data);
 	if (target == 0) return;
 
 	TransferData transferData = new TransferData();
@@ -539,7 +539,7 @@
 	if (transfer == null) return;
 	transfer.javaToNative(event.data, transferData);
 	if (transferData.result != 1) return;
-	GTK.gtk_selection_data_set(selection_data, transferData.type, transferData.format, transferData.pValue, transferData.length);
+	GTK3.gtk_selection_data_set(selection_data, transferData.type, transferData.format, transferData.pValue, transferData.length);
 	OS.g_free(transferData.pValue);
 	return;
 }
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 6154334..a758f7f 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
@@ -350,10 +350,10 @@
 	// Get data in a Java format
 	Object object = null;
 	TransferData transferData = new TransferData();
-	int length = GTK.gtk_selection_data_get_length(selection_data);
-	int format = GTK.gtk_selection_data_get_format(selection_data);
-	long data = GTK.gtk_selection_data_get_data(selection_data);
-	long type = GTK.gtk_selection_data_get_data_type(selection_data);
+	int length = GTK3.gtk_selection_data_get_length(selection_data);
+	int format = GTK3.gtk_selection_data_get_format(selection_data);
+	long data = GTK3.gtk_selection_data_get_data(selection_data);
+	long type = GTK3.gtk_selection_data_get_data_type(selection_data);
 	if (data != 0) {
 		transferData.type = type;
 		transferData.length = length;
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 f18e48c..238b803 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
@@ -23,6 +23,30 @@
 #define GTK3_NATIVE(func) Java_org_eclipse_swt_internal_gtk3_GTK3_##func
 #endif
 
+#ifndef NO_GTK_1IS_1MENU_1ITEM
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(GTK_1IS_1MENU_1ITEM)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, GTK_1IS_1MENU_1ITEM_FUNC);
+	rc = (jboolean)GTK_IS_MENU_ITEM(arg0);
+	GTK3_NATIVE_EXIT(env, that, GTK_1IS_1MENU_1ITEM_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_GTK_1TYPE_1MENU
+JNIEXPORT jlong JNICALL GTK3_NATIVE(GTK_1TYPE_1MENU)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, GTK_1TYPE_1MENU_FUNC);
+	rc = (jlong)GTK_TYPE_MENU;
+	GTK3_NATIVE_EXIT(env, that, GTK_1TYPE_1MENU_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1accel_1label_1new
 JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1accel_1label_1new)
 	(JNIEnv *env, jclass that, jbyteArray arg0)
@@ -161,6 +185,40 @@
 }
 #endif
 
+#ifndef NO_gtk_1check_1menu_1item_1get_1active
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1check_1menu_1item_1get_1active)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1get_1active_FUNC);
+	rc = (jboolean)gtk_check_menu_item_get_active((GtkCheckMenuItem *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1get_1active_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1check_1menu_1item_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1check_1menu_1item_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1new_FUNC);
+	rc = (jlong)gtk_check_menu_item_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1check_1menu_1item_1set_1active
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1check_1menu_1item_1set_1active)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1set_1active_FUNC);
+	gtk_check_menu_item_set_active((GtkCheckMenuItem *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1set_1active_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1clipboard_1clear
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1clipboard_1clear)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -617,6 +675,62 @@
 }
 #endif
 
+#ifndef NO_gtk_1icon_1info_1load_1icon
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1icon_1info_1load_1icon)
+	(JNIEnv *env, jclass that, jlong arg0, jlongArray arg1)
+{
+	jlong *lparg1=NULL;
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1icon_1info_1load_1icon_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetLongArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_icon_info_load_icon((GtkIconInfo *)arg0, (GError **)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseLongArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1icon_1info_1load_1icon_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1icon_1theme_1get_1default
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1icon_1theme_1get_1default)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1icon_1theme_1get_1default_FUNC);
+	rc = (jlong)gtk_icon_theme_get_default();
+	GTK3_NATIVE_EXIT(env, that, gtk_1icon_1theme_1get_1default_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1icon_1theme_1load_1icon
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1icon_1theme_1load_1icon)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jint arg2, jint arg3, jlong arg4)
+{
+	jbyte *lparg1=NULL;
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1icon_1theme_1load_1icon_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_icon_theme_load_icon((GtkIconTheme *)arg0, (const gchar *)lparg1, (gint)arg2, (GtkIconLookupFlags)arg3, (GError **)arg4);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1icon_1theme_1load_1icon_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1icon_1theme_1lookup_1by_1gicon
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1icon_1theme_1lookup_1by_1gicon)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1icon_1theme_1lookup_1by_1gicon_FUNC);
+	rc = (jlong)gtk_icon_theme_lookup_by_gicon((GtkIconTheme *)arg0, (GIcon *)arg1, (gint)arg2, (GtkIconLookupFlags)arg3);
+	GTK3_NATIVE_EXIT(env, that, gtk_1icon_1theme_1lookup_1by_1gicon_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1im_1context_1filter_1keypress
 JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1im_1context_1filter_1keypress)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -670,6 +784,120 @@
 }
 #endif
 
+#ifndef NO_gtk_1menu_1bar_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1menu_1bar_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1bar_1new_FUNC);
+	rc = (jlong)gtk_menu_bar_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1bar_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1menu_1item_1get_1submenu
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1menu_1item_1get_1submenu)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1item_1get_1submenu_FUNC);
+	rc = (jlong)gtk_menu_item_get_submenu((GtkMenuItem *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1item_1get_1submenu_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1menu_1item_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1menu_1item_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1item_1new_FUNC);
+	rc = (jlong)gtk_menu_item_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1item_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1menu_1item_1set_1submenu
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1item_1set_1submenu)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1item_1set_1submenu_FUNC);
+	gtk_menu_item_set_submenu((GtkMenuItem *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1item_1set_1submenu_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1menu_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1new_FUNC);
+	rc = (jlong)gtk_menu_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1menu_1popdown
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1popdown)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1popdown_FUNC);
+	gtk_menu_popdown((GtkMenu *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1popdown_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1shell_1deactivate
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1shell_1deactivate)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1shell_1deactivate_FUNC);
+	gtk_menu_shell_deactivate((GtkMenuShell *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1shell_1deactivate_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1shell_1insert
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1shell_1insert)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1shell_1insert_FUNC);
+	gtk_menu_shell_insert((GtkMenuShell *)arg0, (GtkWidget *)arg1, (gint)arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1shell_1insert_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1shell_1set_1take_1focus
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1shell_1set_1take_1focus)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1shell_1set_1take_1focus_FUNC);
+	gtk_menu_shell_set_take_focus((GtkMenuShell *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1shell_1set_1take_1focus_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1tool_1button_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1menu_1tool_1button_1new)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1tool_1button_1new_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_menu_tool_button_new((GtkWidget *)arg0, (const gchar *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1tool_1button_1new_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1native_1dialog_1run
 JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1native_1dialog_1run)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -706,6 +934,30 @@
 }
 #endif
 
+#ifndef NO_gtk_1radio_1menu_1item_1get_1group
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1radio_1menu_1item_1get_1group)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1radio_1menu_1item_1get_1group_FUNC);
+	rc = (jlong)gtk_radio_menu_item_get_group((GtkRadioMenuItem *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1radio_1menu_1item_1get_1group_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1radio_1menu_1item_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1radio_1menu_1item_1new)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1radio_1menu_1item_1new_FUNC);
+	rc = (jlong)gtk_radio_menu_item_new((GSList *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1radio_1menu_1item_1new_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1rgb_1to_1hsv
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1rgb_1to_1hsv)
 	(JNIEnv *env, jclass that, jdouble arg0, jdouble arg1, jdouble arg2, jdoubleArray arg3, jdoubleArray arg4, jdoubleArray arg5)
@@ -760,6 +1012,120 @@
 }
 #endif
 
+#ifndef NO_gtk_1selection_1data_1free
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1selection_1data_1free)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1free_FUNC);
+	gtk_selection_data_free((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1free_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1get_1data
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1selection_1data_1get_1data)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1data_FUNC);
+	rc = (jlong)gtk_selection_data_get_data((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1data_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1get_1data_1type
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1selection_1data_1get_1data_1type)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1data_1type_FUNC);
+	rc = (jlong)gtk_selection_data_get_data_type((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1data_1type_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1get_1format
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1selection_1data_1get_1format)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1format_FUNC);
+	rc = (jint)gtk_selection_data_get_format((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1format_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1get_1length
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1selection_1data_1get_1length)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1length_FUNC);
+	rc = (jint)gtk_selection_data_get_length((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1length_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1get_1target
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1selection_1data_1get_1target)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1target_FUNC);
+	rc = (jlong)gtk_selection_data_get_target((GtkSelectionData *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1target_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1selection_1data_1set
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1selection_1data_1set)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jlong arg3, jint arg4)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1selection_1data_1set_FUNC);
+	gtk_selection_data_set((GtkSelectionData *)arg0, (GdkAtom)arg1, (gint)arg2, (const guchar *)arg3, (gint)arg4);
+	GTK3_NATIVE_EXIT(env, that, gtk_1selection_1data_1set_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1separator_1menu_1item_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1separator_1menu_1item_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1separator_1menu_1item_1new_FUNC);
+	rc = (jlong)gtk_separator_menu_item_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1separator_1menu_1item_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1separator_1tool_1item_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1separator_1tool_1item_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1separator_1tool_1item_1new_FUNC);
+	rc = (jlong)gtk_separator_tool_item_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1separator_1tool_1item_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1separator_1tool_1item_1set_1draw
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1separator_1tool_1item_1set_1draw)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1separator_1tool_1item_1set_1draw_FUNC);
+	gtk_separator_tool_item_set_draw((GtkSeparatorToolItem *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1separator_1tool_1item_1set_1draw_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1status_1icon_1get_1visible
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1status_1icon_1get_1visible)
@@ -850,6 +1216,200 @@
 }
 #endif
 
+#ifndef NO_gtk_1toggle_1tool_1button_1get_1active
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1toggle_1tool_1button_1get_1active)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1get_1active_FUNC);
+	rc = (jboolean)gtk_toggle_tool_button_get_active((GtkToggleToolButton *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1get_1active_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1toggle_1tool_1button_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1toggle_1tool_1button_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1new_FUNC);
+	rc = (jlong)gtk_toggle_tool_button_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1toggle_1tool_1button_1set_1active
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1toggle_1tool_1button_1set_1active)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1set_1active_FUNC);
+	gtk_toggle_tool_button_set_active((GtkToggleToolButton *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1set_1active_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1button_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1tool_1button_1new)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1button_1new_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_tool_button_new((GtkWidget *)arg0, (const gchar *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1button_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1tool_1button_1set_1icon_1widget
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1button_1set_1icon_1widget)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1icon_1widget_FUNC);
+	gtk_tool_button_set_icon_widget((GtkToolButton *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1icon_1widget_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1button_1set_1label_1widget
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1button_1set_1label_1widget)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1label_1widget_FUNC);
+	gtk_tool_button_set_label_widget((GtkToolButton *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1label_1widget_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1button_1set_1use_1underline
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1button_1set_1use_1underline)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1use_1underline_FUNC);
+	gtk_tool_button_set_use_underline((GtkToolButton *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1use_1underline_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1item_1get_1proxy_1menu_1item
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1tool_1item_1get_1proxy_1menu_1item)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_tool_item_get_proxy_menu_item((GtkToolItem *)arg0, (const gchar *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1tool_1item_1retrieve_1proxy_1menu_1item
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1tool_1item_1retrieve_1proxy_1menu_1item)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC);
+	rc = (jlong)gtk_tool_item_retrieve_proxy_menu_item((GtkToolItem *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1tool_1item_1set_1homogeneous
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1item_1set_1homogeneous)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1homogeneous_FUNC);
+	gtk_tool_item_set_homogeneous((GtkToolItem *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1homogeneous_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1item_1set_1is_1important
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1item_1set_1is_1important)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1is_1important_FUNC);
+	gtk_tool_item_set_is_important((GtkToolItem *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1is_1important_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1tool_1item_1set_1proxy_1menu_1item
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1tool_1item_1set_1proxy_1menu_1item)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2)
+{
+	jbyte *lparg1=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	gtk_tool_item_set_proxy_menu_item((GtkToolItem *)arg0, (const gchar *)lparg1, (GtkWidget *)arg2);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1toolbar_1insert
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1toolbar_1insert)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1toolbar_1insert_FUNC);
+	gtk_toolbar_insert((GtkToolbar *)arg0, (GtkToolItem *)arg1, arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toolbar_1insert_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1toolbar_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1toolbar_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1toolbar_1new_FUNC);
+	rc = (jlong)gtk_toolbar_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1toolbar_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1toolbar_1set_1icon_1size
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1toolbar_1set_1icon_1size)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1icon_1size_FUNC);
+	gtk_toolbar_set_icon_size((GtkToolbar *)arg0, arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1icon_1size_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1toolbar_1set_1show_1arrow
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1toolbar_1set_1show_1arrow)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1show_1arrow_FUNC);
+	gtk_toolbar_set_show_arrow((GtkToolbar *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1show_1arrow_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1toolbar_1set_1style
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1toolbar_1set_1style)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1style_FUNC);
+	gtk_toolbar_set_style((GtkToolbar *)arg0, (GtkToolbarStyle)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1style_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1widget_1get_1accessible
 JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1accessible)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -862,6 +1422,168 @@
 }
 #endif
 
+#ifndef NO_gtk_1window_1activate_1default
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1window_1activate_1default)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1activate_1default_FUNC);
+	rc = (jboolean)gtk_window_activate_default((GtkWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1activate_1default_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1add_1accel_1group
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1add_1accel_1group)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1add_1accel_1group_FUNC);
+	gtk_window_add_accel_group((GtkWindow *)arg0, (GtkAccelGroup *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1add_1accel_1group_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1deiconify
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1deiconify)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1deiconify_FUNC);
+	gtk_window_deiconify((GtkWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1deiconify_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1get_1icon_1list
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1window_1get_1icon_1list)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1get_1icon_1list_FUNC);
+	rc = (jlong)gtk_window_get_icon_list((GtkWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1get_1icon_1list_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1get_1mnemonic_1modifier
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1window_1get_1mnemonic_1modifier)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1get_1mnemonic_1modifier_FUNC);
+	rc = (jint)gtk_window_get_mnemonic_modifier((GtkWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1get_1mnemonic_1modifier_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1get_1position
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1get_1position)
+	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1get_1position_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_window_get_position((GtkWindow *)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_1window_1get_1position_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1get_1size
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1get_1size)
+	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1get_1size_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_window_get_size((GtkWindow *)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_1window_1get_1size_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1iconify
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1iconify)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1iconify_FUNC);
+	gtk_window_iconify((GtkWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1iconify_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1move
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1move)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1move_FUNC);
+	gtk_window_move((GtkWindow *)arg0, (gint)arg1, (gint)arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1move_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1window_1new)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1new_FUNC);
+	rc = (jlong)gtk_window_new((GtkWindowType)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1remove_1accel_1group
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1remove_1accel_1group)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1remove_1accel_1group_FUNC);
+	gtk_window_remove_accel_group((GtkWindow *)arg0, (GtkAccelGroup *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1remove_1accel_1group_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1resize
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1resize)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1resize_FUNC);
+	gtk_window_resize((GtkWindow *)arg0, (gint)arg1, (gint)arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1resize_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1attached_1to
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1attached_1to)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1attached_1to_FUNC);
+	gtk_window_set_attached_to((GtkWindow *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1attached_1to_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1default
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1default)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1default_FUNC);
+	gtk_window_set_default((GtkWindow *)arg0, (GtkWidget *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1default_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1window_1set_1icon_1list
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1icon_1list)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -872,3 +1594,33 @@
 }
 #endif
 
+#ifndef NO_gtk_1window_1set_1keep_1above
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1keep_1above)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1keep_1above_FUNC);
+	gtk_window_set_keep_above((GtkWindow *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1keep_1above_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1skip_1taskbar_1hint
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1skip_1taskbar_1hint)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1skip_1taskbar_1hint_FUNC);
+	gtk_window_set_skip_taskbar_hint((GtkWindow *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1skip_1taskbar_1hint_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1type_1hint
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1type_1hint)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1type_1hint_FUNC);
+	gtk_window_set_type_hint((GtkWindow *)arg0, arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1type_1hint_FUNC);
+}
+#endif
+
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 a3fc741..b3dee54 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
@@ -21,6 +21,8 @@
 #ifdef NATIVE_STATS
 
 char * GTK3_nativeFunctionNames[] = {
+	"GTK_1IS_1MENU_1ITEM",
+	"GTK_1TYPE_1MENU",
 	"gtk_1accel_1label_1new",
 	"gtk_1accel_1label_1set_1accel",
 	"gtk_1accel_1label_1set_1accel_1widget",
@@ -33,6 +35,9 @@
 	"gtk_1calendar_1select_1day",
 	"gtk_1calendar_1select_1month",
 	"gtk_1calendar_1set_1display_1options",
+	"gtk_1check_1menu_1item_1get_1active",
+	"gtk_1check_1menu_1item_1new",
+	"gtk_1check_1menu_1item_1set_1active",
 	"gtk_1clipboard_1clear",
 	"gtk_1clipboard_1get",
 	"gtk_1clipboard_1set_1can_1store",
@@ -73,17 +78,43 @@
 	"gtk_1grab_1get_1current",
 	"gtk_1grab_1remove",
 	"gtk_1hsv_1to_1rgb",
+	"gtk_1icon_1info_1load_1icon",
+	"gtk_1icon_1theme_1get_1default",
+	"gtk_1icon_1theme_1load_1icon",
+	"gtk_1icon_1theme_1lookup_1by_1gicon",
 	"gtk_1im_1context_1filter_1keypress",
 	"gtk_1init_1check",
 	"gtk_1main_1do_1event",
 	"gtk_1main_1iteration_1do",
+	"gtk_1menu_1bar_1new",
+	"gtk_1menu_1item_1get_1submenu",
+	"gtk_1menu_1item_1new",
+	"gtk_1menu_1item_1set_1submenu",
+	"gtk_1menu_1new",
+	"gtk_1menu_1popdown",
+	"gtk_1menu_1shell_1deactivate",
+	"gtk_1menu_1shell_1insert",
+	"gtk_1menu_1shell_1set_1take_1focus",
+	"gtk_1menu_1tool_1button_1new",
 	"gtk_1native_1dialog_1run",
 	"gtk_1radio_1button_1get_1group",
 	"gtk_1radio_1button_1new",
+	"gtk_1radio_1menu_1item_1get_1group",
+	"gtk_1radio_1menu_1item_1new",
 	"gtk_1rgb_1to_1hsv",
 	"gtk_1scrolled_1window_1get_1shadow_1type",
 	"gtk_1scrolled_1window_1new",
 	"gtk_1scrolled_1window_1set_1shadow_1type",
+	"gtk_1selection_1data_1free",
+	"gtk_1selection_1data_1get_1data",
+	"gtk_1selection_1data_1get_1data_1type",
+	"gtk_1selection_1data_1get_1format",
+	"gtk_1selection_1data_1get_1length",
+	"gtk_1selection_1data_1get_1target",
+	"gtk_1selection_1data_1set",
+	"gtk_1separator_1menu_1item_1new",
+	"gtk_1separator_1tool_1item_1new",
+	"gtk_1separator_1tool_1item_1set_1draw",
 	"gtk_1status_1icon_1get_1visible",
 	"gtk_1status_1icon_1new",
 	"gtk_1status_1icon_1set_1from_1pixbuf",
@@ -91,8 +122,42 @@
 	"gtk_1status_1icon_1set_1visible",
 	"gtk_1target_1list_1new",
 	"gtk_1target_1list_1unref",
+	"gtk_1toggle_1tool_1button_1get_1active",
+	"gtk_1toggle_1tool_1button_1new",
+	"gtk_1toggle_1tool_1button_1set_1active",
+	"gtk_1tool_1button_1new",
+	"gtk_1tool_1button_1set_1icon_1widget",
+	"gtk_1tool_1button_1set_1label_1widget",
+	"gtk_1tool_1button_1set_1use_1underline",
+	"gtk_1tool_1item_1get_1proxy_1menu_1item",
+	"gtk_1tool_1item_1retrieve_1proxy_1menu_1item",
+	"gtk_1tool_1item_1set_1homogeneous",
+	"gtk_1tool_1item_1set_1is_1important",
+	"gtk_1tool_1item_1set_1proxy_1menu_1item",
+	"gtk_1toolbar_1insert",
+	"gtk_1toolbar_1new",
+	"gtk_1toolbar_1set_1icon_1size",
+	"gtk_1toolbar_1set_1show_1arrow",
+	"gtk_1toolbar_1set_1style",
 	"gtk_1widget_1get_1accessible",
+	"gtk_1window_1activate_1default",
+	"gtk_1window_1add_1accel_1group",
+	"gtk_1window_1deiconify",
+	"gtk_1window_1get_1icon_1list",
+	"gtk_1window_1get_1mnemonic_1modifier",
+	"gtk_1window_1get_1position",
+	"gtk_1window_1get_1size",
+	"gtk_1window_1iconify",
+	"gtk_1window_1move",
+	"gtk_1window_1new",
+	"gtk_1window_1remove_1accel_1group",
+	"gtk_1window_1resize",
+	"gtk_1window_1set_1attached_1to",
+	"gtk_1window_1set_1default",
 	"gtk_1window_1set_1icon_1list",
+	"gtk_1window_1set_1keep_1above",
+	"gtk_1window_1set_1skip_1taskbar_1hint",
+	"gtk_1window_1set_1type_1hint",
 };
 #define NATIVE_FUNCTION_COUNT sizeof(GTK3_nativeFunctionNames) / sizeof(char*)
 int GTK3_nativeFunctionCount = NATIVE_FUNCTION_COUNT;
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 34246d5..b2a0064 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
@@ -31,6 +31,8 @@
 #endif
 
 typedef enum {
+	GTK_1IS_1MENU_1ITEM_FUNC,
+	GTK_1TYPE_1MENU_FUNC,
 	gtk_1accel_1label_1new_FUNC,
 	gtk_1accel_1label_1set_1accel_FUNC,
 	gtk_1accel_1label_1set_1accel_1widget_FUNC,
@@ -43,6 +45,9 @@
 	gtk_1calendar_1select_1day_FUNC,
 	gtk_1calendar_1select_1month_FUNC,
 	gtk_1calendar_1set_1display_1options_FUNC,
+	gtk_1check_1menu_1item_1get_1active_FUNC,
+	gtk_1check_1menu_1item_1new_FUNC,
+	gtk_1check_1menu_1item_1set_1active_FUNC,
 	gtk_1clipboard_1clear_FUNC,
 	gtk_1clipboard_1get_FUNC,
 	gtk_1clipboard_1set_1can_1store_FUNC,
@@ -83,17 +88,43 @@
 	gtk_1grab_1get_1current_FUNC,
 	gtk_1grab_1remove_FUNC,
 	gtk_1hsv_1to_1rgb_FUNC,
+	gtk_1icon_1info_1load_1icon_FUNC,
+	gtk_1icon_1theme_1get_1default_FUNC,
+	gtk_1icon_1theme_1load_1icon_FUNC,
+	gtk_1icon_1theme_1lookup_1by_1gicon_FUNC,
 	gtk_1im_1context_1filter_1keypress_FUNC,
 	gtk_1init_1check_FUNC,
 	gtk_1main_1do_1event_FUNC,
 	gtk_1main_1iteration_1do_FUNC,
+	gtk_1menu_1bar_1new_FUNC,
+	gtk_1menu_1item_1get_1submenu_FUNC,
+	gtk_1menu_1item_1new_FUNC,
+	gtk_1menu_1item_1set_1submenu_FUNC,
+	gtk_1menu_1new_FUNC,
+	gtk_1menu_1popdown_FUNC,
+	gtk_1menu_1shell_1deactivate_FUNC,
+	gtk_1menu_1shell_1insert_FUNC,
+	gtk_1menu_1shell_1set_1take_1focus_FUNC,
+	gtk_1menu_1tool_1button_1new_FUNC,
 	gtk_1native_1dialog_1run_FUNC,
 	gtk_1radio_1button_1get_1group_FUNC,
 	gtk_1radio_1button_1new_FUNC,
+	gtk_1radio_1menu_1item_1get_1group_FUNC,
+	gtk_1radio_1menu_1item_1new_FUNC,
 	gtk_1rgb_1to_1hsv_FUNC,
 	gtk_1scrolled_1window_1get_1shadow_1type_FUNC,
 	gtk_1scrolled_1window_1new_FUNC,
 	gtk_1scrolled_1window_1set_1shadow_1type_FUNC,
+	gtk_1selection_1data_1free_FUNC,
+	gtk_1selection_1data_1get_1data_FUNC,
+	gtk_1selection_1data_1get_1data_1type_FUNC,
+	gtk_1selection_1data_1get_1format_FUNC,
+	gtk_1selection_1data_1get_1length_FUNC,
+	gtk_1selection_1data_1get_1target_FUNC,
+	gtk_1selection_1data_1set_FUNC,
+	gtk_1separator_1menu_1item_1new_FUNC,
+	gtk_1separator_1tool_1item_1new_FUNC,
+	gtk_1separator_1tool_1item_1set_1draw_FUNC,
 	gtk_1status_1icon_1get_1visible_FUNC,
 	gtk_1status_1icon_1new_FUNC,
 	gtk_1status_1icon_1set_1from_1pixbuf_FUNC,
@@ -101,6 +132,40 @@
 	gtk_1status_1icon_1set_1visible_FUNC,
 	gtk_1target_1list_1new_FUNC,
 	gtk_1target_1list_1unref_FUNC,
+	gtk_1toggle_1tool_1button_1get_1active_FUNC,
+	gtk_1toggle_1tool_1button_1new_FUNC,
+	gtk_1toggle_1tool_1button_1set_1active_FUNC,
+	gtk_1tool_1button_1new_FUNC,
+	gtk_1tool_1button_1set_1icon_1widget_FUNC,
+	gtk_1tool_1button_1set_1label_1widget_FUNC,
+	gtk_1tool_1button_1set_1use_1underline_FUNC,
+	gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC,
+	gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC,
+	gtk_1tool_1item_1set_1homogeneous_FUNC,
+	gtk_1tool_1item_1set_1is_1important_FUNC,
+	gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC,
+	gtk_1toolbar_1insert_FUNC,
+	gtk_1toolbar_1new_FUNC,
+	gtk_1toolbar_1set_1icon_1size_FUNC,
+	gtk_1toolbar_1set_1show_1arrow_FUNC,
+	gtk_1toolbar_1set_1style_FUNC,
 	gtk_1widget_1get_1accessible_FUNC,
+	gtk_1window_1activate_1default_FUNC,
+	gtk_1window_1add_1accel_1group_FUNC,
+	gtk_1window_1deiconify_FUNC,
+	gtk_1window_1get_1icon_1list_FUNC,
+	gtk_1window_1get_1mnemonic_1modifier_FUNC,
+	gtk_1window_1get_1position_FUNC,
+	gtk_1window_1get_1size_FUNC,
+	gtk_1window_1iconify_FUNC,
+	gtk_1window_1move_FUNC,
+	gtk_1window_1new_FUNC,
+	gtk_1window_1remove_1accel_1group_FUNC,
+	gtk_1window_1resize_FUNC,
+	gtk_1window_1set_1attached_1to_FUNC,
+	gtk_1window_1set_1default_FUNC,
 	gtk_1window_1set_1icon_1list_FUNC,
+	gtk_1window_1set_1keep_1above_FUNC,
+	gtk_1window_1set_1skip_1taskbar_1hint_FUNC,
+	gtk_1window_1set_1type_1hint_FUNC,
 } GTK3_FUNCS;
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 14300b0..04d686a 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
@@ -387,6 +387,46 @@
 }
 #endif
 
+#ifndef NO_gtk_1icon_1paintable_1get_1file
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1icon_1paintable_1get_1file)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1icon_1paintable_1get_1file_FUNC);
+	rc = (jlong)gtk_icon_paintable_get_file((GtkIconPaintable *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1icon_1paintable_1get_1file_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1icon_1theme_1get_1for_1display
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1icon_1theme_1get_1for_1display)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1icon_1theme_1get_1for_1display_FUNC);
+	rc = (jlong)gtk_icon_theme_get_for_display((GdkDisplay *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1icon_1theme_1get_1for_1display_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1icon_1theme_1lookup_1icon
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1icon_1theme_1lookup_1icon)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jint arg3, jint arg4, jint arg5, jint arg6)
+{
+	jbyte *lparg1=NULL;
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1icon_1theme_1lookup_1icon_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_icon_theme_lookup_icon((GtkIconTheme *)arg0, (const char *)lparg1, (const char **)arg2, (gint)arg3, (gint)arg4, (GtkTextDirection)arg5, (GtkIconLookupFlags)arg6);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1icon_1theme_1lookup_1icon_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1im_1context_1filter_1keypress
 JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1im_1context_1filter_1keypress)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -411,6 +451,46 @@
 }
 #endif
 
+#ifndef NO_gtk_1keyval_1trigger_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1keyval_1trigger_1new)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1keyval_1trigger_1new_FUNC);
+	rc = (jlong)gtk_keyval_trigger_new((guint)arg0, (GdkModifierType)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1keyval_1trigger_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1named_1action_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1named_1action_1new)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1named_1action_1new_FUNC);
+	if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
+	rc = (jlong)gtk_named_action_new((const char *)lparg0);
+fail:
+	if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1named_1action_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1native_1get_1surface
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1native_1get_1surface)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1native_1get_1surface_FUNC);
+	rc = (jlong)gtk_native_get_surface((GtkNative *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1native_1get_1surface_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1picture_1new
 JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1picture_1new)
 	(JNIEnv *env, jclass that)
@@ -443,6 +523,50 @@
 }
 #endif
 
+#ifndef NO_gtk_1popover_1menu_1bar_1new_1from_1model
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1popover_1menu_1bar_1new_1from_1model)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1popover_1menu_1bar_1new_1from_1model_FUNC);
+	rc = (jlong)gtk_popover_menu_bar_new_from_model((GMenuModel *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1popover_1menu_1bar_1new_1from_1model_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1popover_1menu_1new_1from_1model_1full
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1popover_1menu_1new_1from_1model_1full)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1popover_1menu_1new_1from_1model_1full_FUNC);
+	rc = (jlong)gtk_popover_menu_new_from_model_full((GMenuModel *)arg0, (GtkPopoverMenuFlags)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1popover_1menu_1new_1from_1model_1full_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1popover_1menu_1set_1menu_1model
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1popover_1menu_1set_1menu_1model)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1popover_1menu_1set_1menu_1model_FUNC);
+	gtk_popover_menu_set_menu_model((GtkPopoverMenu *)arg0, (GMenuModel *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1popover_1menu_1set_1menu_1model_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1popover_1set_1has_1arrow
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1popover_1set_1has_1arrow)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1popover_1set_1has_1arrow_FUNC);
+	gtk_popover_set_has_arrow((GtkPopover *)arg0, arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1popover_1set_1has_1arrow_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1rgb_1to_1hsv
 JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1rgb_1to_1hsv)
 	(JNIEnv *env, jclass that, jfloat arg0, jfloat arg1, jfloat arg2, jfloatArray arg3, jfloatArray arg4, jfloatArray arg5)
@@ -507,3 +631,153 @@
 }
 #endif
 
+#ifndef NO_gtk_1shortcut_1controller_1add_1shortcut
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1shortcut_1controller_1add_1shortcut)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1add_1shortcut_FUNC);
+	gtk_shortcut_controller_add_shortcut((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1add_1shortcut_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1shortcut_1controller_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1shortcut_1controller_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1new_FUNC);
+	rc = (jlong)gtk_shortcut_controller_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1shortcut_1controller_1remove_1shortcut
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1shortcut_1controller_1remove_1shortcut)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1remove_1shortcut_FUNC);
+	gtk_shortcut_controller_remove_shortcut((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1remove_1shortcut_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1shortcut_1controller_1set_1scope
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1shortcut_1controller_1set_1scope)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1set_1scope_FUNC);
+	gtk_shortcut_controller_set_scope((GtkShortcutController *)arg0, (GtkShortcutScope)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1set_1scope_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1shortcut_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1shortcut_1new)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1shortcut_1new_FUNC);
+	rc = (jlong)gtk_shortcut_new((GtkShortcutTrigger *)arg0, (GtkShortcutAction *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1shortcut_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1text_1get_1buffer
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1text_1get_1buffer)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1text_1get_1buffer_FUNC);
+	rc = (jlong)gtk_text_get_buffer((GtkText *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1text_1get_1buffer_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1destroy
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1destroy)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1destroy_FUNC);
+	gtk_window_destroy((GtkWindow *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1destroy_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1get_1icon_1name
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1window_1get_1icon_1name)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1get_1icon_1name_FUNC);
+	rc = (jlong)gtk_window_get_icon_name((GtkWindow *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1get_1icon_1name_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1minimize
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1minimize)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1minimize_FUNC);
+	gtk_window_minimize((GtkWindow *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1minimize_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1window_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1new_FUNC);
+	rc = (jlong)gtk_window_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1child
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1set_1child)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1set_1child_FUNC);
+	gtk_window_set_child((GtkWindow *)arg0, (GtkWidget *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1set_1child_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1default_1widget
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1set_1default_1widget)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1set_1default_1widget_FUNC);
+	gtk_window_set_default_widget((GtkWindow *)arg0, (GtkWidget *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1set_1default_1widget_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1set_1icon_1name
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1set_1icon_1name)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1set_1icon_1name_FUNC);
+	gtk_window_set_icon_name((GtkWindow *)arg0, (const char *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1set_1icon_1name_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1window_1unminimize
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1window_1unminimize)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1window_1unminimize_FUNC);
+	gtk_window_unminimize((GtkWindow *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1window_1unminimize_FUNC);
+}
+#endif
+
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 ba8c94b..e7079cf 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
@@ -53,16 +53,40 @@
 	"gtk_1file_1chooser_1set_1current_1folder",
 	"gtk_1file_1chooser_1set_1file",
 	"gtk_1hsv_1to_1rgb",
+	"gtk_1icon_1paintable_1get_1file",
+	"gtk_1icon_1theme_1get_1for_1display",
+	"gtk_1icon_1theme_1lookup_1icon",
 	"gtk_1im_1context_1filter_1keypress",
 	"gtk_1init_1check",
+	"gtk_1keyval_1trigger_1new",
+	"gtk_1named_1action_1new",
+	"gtk_1native_1get_1surface",
 	"gtk_1picture_1new",
 	"gtk_1picture_1set_1can_1shrink",
 	"gtk_1picture_1set_1paintable",
+	"gtk_1popover_1menu_1bar_1new_1from_1model",
+	"gtk_1popover_1menu_1new_1from_1model_1full",
+	"gtk_1popover_1menu_1set_1menu_1model",
+	"gtk_1popover_1set_1has_1arrow",
 	"gtk_1rgb_1to_1hsv",
 	"gtk_1scrolled_1window_1get_1has_1frame",
 	"gtk_1scrolled_1window_1new",
 	"gtk_1scrolled_1window_1set_1child",
 	"gtk_1scrolled_1window_1set_1has_1frame",
+	"gtk_1shortcut_1controller_1add_1shortcut",
+	"gtk_1shortcut_1controller_1new",
+	"gtk_1shortcut_1controller_1remove_1shortcut",
+	"gtk_1shortcut_1controller_1set_1scope",
+	"gtk_1shortcut_1new",
+	"gtk_1text_1get_1buffer",
+	"gtk_1window_1destroy",
+	"gtk_1window_1get_1icon_1name",
+	"gtk_1window_1minimize",
+	"gtk_1window_1new",
+	"gtk_1window_1set_1child",
+	"gtk_1window_1set_1default_1widget",
+	"gtk_1window_1set_1icon_1name",
+	"gtk_1window_1unminimize",
 };
 #define NATIVE_FUNCTION_COUNT sizeof(GTK4_nativeFunctionNames) / sizeof(char*)
 int GTK4_nativeFunctionCount = NATIVE_FUNCTION_COUNT;
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 5b6b423..45e2107 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
@@ -63,14 +63,38 @@
 	gtk_1file_1chooser_1set_1current_1folder_FUNC,
 	gtk_1file_1chooser_1set_1file_FUNC,
 	gtk_1hsv_1to_1rgb_FUNC,
+	gtk_1icon_1paintable_1get_1file_FUNC,
+	gtk_1icon_1theme_1get_1for_1display_FUNC,
+	gtk_1icon_1theme_1lookup_1icon_FUNC,
 	gtk_1im_1context_1filter_1keypress_FUNC,
 	gtk_1init_1check_FUNC,
+	gtk_1keyval_1trigger_1new_FUNC,
+	gtk_1named_1action_1new_FUNC,
+	gtk_1native_1get_1surface_FUNC,
 	gtk_1picture_1new_FUNC,
 	gtk_1picture_1set_1can_1shrink_FUNC,
 	gtk_1picture_1set_1paintable_FUNC,
+	gtk_1popover_1menu_1bar_1new_1from_1model_FUNC,
+	gtk_1popover_1menu_1new_1from_1model_1full_FUNC,
+	gtk_1popover_1menu_1set_1menu_1model_FUNC,
+	gtk_1popover_1set_1has_1arrow_FUNC,
 	gtk_1rgb_1to_1hsv_FUNC,
 	gtk_1scrolled_1window_1get_1has_1frame_FUNC,
 	gtk_1scrolled_1window_1new_FUNC,
 	gtk_1scrolled_1window_1set_1child_FUNC,
 	gtk_1scrolled_1window_1set_1has_1frame_FUNC,
+	gtk_1shortcut_1controller_1add_1shortcut_FUNC,
+	gtk_1shortcut_1controller_1new_FUNC,
+	gtk_1shortcut_1controller_1remove_1shortcut_FUNC,
+	gtk_1shortcut_1controller_1set_1scope_FUNC,
+	gtk_1shortcut_1new_FUNC,
+	gtk_1text_1get_1buffer_FUNC,
+	gtk_1window_1destroy_FUNC,
+	gtk_1window_1get_1icon_1name_FUNC,
+	gtk_1window_1minimize_FUNC,
+	gtk_1window_1new_FUNC,
+	gtk_1window_1set_1child_FUNC,
+	gtk_1window_1set_1default_1widget_FUNC,
+	gtk_1window_1set_1icon_1name_FUNC,
+	gtk_1window_1unminimize_FUNC,
 } GTK4_FUNCS;
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 964c5e8..d13dc8c 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
@@ -3554,18 +3554,6 @@
 }
 #endif
 
-#ifndef NO_GTK_1IS_1MENU_1ITEM
-JNIEXPORT jboolean JNICALL GTK_NATIVE(GTK_1IS_1MENU_1ITEM)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, GTK_1IS_1MENU_1ITEM_FUNC);
-	rc = (jboolean)GTK_IS_MENU_ITEM(arg0);
-	GTK_NATIVE_EXIT(env, that, GTK_1IS_1MENU_1ITEM_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_GTK_1IS_1PLUG
 JNIEXPORT jboolean JNICALL GTK_NATIVE(GTK_1IS_1PLUG)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -3650,18 +3638,6 @@
 }
 #endif
 
-#ifndef NO_GTK_1TYPE_1MENU
-JNIEXPORT jlong JNICALL GTK_NATIVE(GTK_1TYPE_1MENU)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, GTK_1TYPE_1MENU_FUNC);
-	rc = (jlong)GTK_TYPE_MENU;
-	GTK_NATIVE_EXIT(env, that, GTK_1TYPE_1MENU_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE
 JNIEXPORT jlong JNICALL GTK_NATIVE(GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE)
 	(JNIEnv *env, jclass that)
@@ -4379,40 +4355,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1check_1menu_1item_1get_1active
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1check_1menu_1item_1get_1active)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1get_1active_FUNC);
-	rc = (jboolean)gtk_check_menu_item_get_active((GtkCheckMenuItem *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1get_1active_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1check_1menu_1item_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1check_1menu_1item_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1new_FUNC);
-	rc = (jlong)gtk_check_menu_item_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1check_1menu_1item_1set_1active
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1check_1menu_1item_1set_1active)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1check_1menu_1item_1set_1active_FUNC);
-	gtk_check_menu_item_set_active((GtkCheckMenuItem *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1check_1menu_1item_1set_1active_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1check_1version
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1check_1version)
 	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
@@ -6150,158 +6092,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1icon_1info_1load_1icon
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1info_1load_1icon)
-	(JNIEnv *env, jclass that, jlong arg0, jlongArray arg1)
-{
-	jlong *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1info_1load_1icon_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetLongArrayElements(env, arg1, NULL)) == NULL) goto fail;
-/*
-	rc = (jlong)gtk_icon_info_load_icon((GtkIconInfo *)arg0, (GError **)lparg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_info_load_icon)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkIconInfo *, GError **))fp)((GtkIconInfo *)arg0, (GError **)lparg1);
-		}
-	}
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseLongArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1info_1load_1icon_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1paintable_1get_1file
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1paintable_1get_1file)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1paintable_1get_1file_FUNC);
-/*
-	rc = (jlong)gtk_icon_paintable_get_file((GtkIconPaintable *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_paintable_get_file)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkIconPaintable *))fp)((GtkIconPaintable *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1paintable_1get_1file_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1theme_1get_1default
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1theme_1get_1default)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1theme_1get_1default_FUNC);
-/*
-	rc = (jlong)gtk_icon_theme_get_default();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_theme_get_default)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1theme_1get_1default_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1theme_1get_1for_1display
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1theme_1get_1for_1display)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1theme_1get_1for_1display_FUNC);
-/*
-	rc = (jlong)gtk_icon_theme_get_for_display((GdkDisplay *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_theme_get_for_display)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GdkDisplay *))fp)((GdkDisplay *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1theme_1get_1for_1display_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1theme_1load_1icon
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1theme_1load_1icon)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jint arg2, jint arg3, jlong arg4)
-{
-	jbyte *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1theme_1load_1icon_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-/*
-	rc = (jlong)gtk_icon_theme_load_icon((GtkIconTheme *)arg0, (const gchar *)lparg1, (gint)arg2, (GtkIconLookupFlags)arg3, (GError **)arg4);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_theme_load_icon)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkIconTheme *, const gchar *, gint, GtkIconLookupFlags, GError **))fp)((GtkIconTheme *)arg0, (const gchar *)lparg1, (gint)arg2, (GtkIconLookupFlags)arg3, (GError **)arg4);
-		}
-	}
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1theme_1load_1icon_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1theme_1lookup_1by_1gicon
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1theme_1lookup_1by_1gicon)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jint arg3)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1theme_1lookup_1by_1gicon_FUNC);
-/*
-	rc = (jlong)gtk_icon_theme_lookup_by_gicon((GtkIconTheme *)arg0, (GIcon *)arg1, (gint)arg2, (GtkIconLookupFlags)arg3);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_theme_lookup_by_gicon)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkIconTheme *, GIcon *, gint, GtkIconLookupFlags))fp)((GtkIconTheme *)arg0, (GIcon *)arg1, (gint)arg2, (GtkIconLookupFlags)arg3);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1theme_1lookup_1by_1gicon_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1icon_1theme_1lookup_1icon
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1icon_1theme_1lookup_1icon)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jint arg3, jint arg4, jint arg5, jint arg6)
-{
-	jbyte *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1icon_1theme_1lookup_1icon_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-/*
-	rc = (jlong)gtk_icon_theme_lookup_icon((GtkIconTheme *)arg0, (const char *)lparg1, (const char **)arg2, (gint)arg3, (gint)arg4, (GtkTextDirection)arg5, (GtkIconLookupFlags)arg6);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_icon_theme_lookup_icon)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkIconTheme *, const char *, const char **, gint, gint, GtkTextDirection, GtkIconLookupFlags))fp)((GtkIconTheme *)arg0, (const char *)lparg1, (const char **)arg2, (gint)arg3, (gint)arg4, (GtkTextDirection)arg5, (GtkIconLookupFlags)arg6);
-		}
-	}
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1icon_1theme_1lookup_1icon_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1im_1context_1focus_1in
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1im_1context_1focus_1in)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -6567,26 +6357,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1keyval_1trigger_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1keyval_1trigger_1new)
-	(JNIEnv *env, jclass that, jint arg0, jint arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1keyval_1trigger_1new_FUNC);
-/*
-	rc = (jlong)gtk_keyval_trigger_new((guint)arg0, (GdkModifierType)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_keyval_trigger_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(guint, GdkModifierType))fp)((guint)arg0, (GdkModifierType)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1keyval_1trigger_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1label_1get_1layout
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1label_1get_1layout)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -6918,18 +6688,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1menu_1bar_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1bar_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1bar_1new_FUNC);
-	rc = (jlong)gtk_menu_bar_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1bar_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1menu_1button_1new
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1button_1new)
 	(JNIEnv *env, jclass that)
@@ -6960,62 +6718,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1menu_1item_1get_1submenu
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1item_1get_1submenu)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1item_1get_1submenu_FUNC);
-	rc = (jlong)gtk_menu_item_get_submenu((GtkMenuItem *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1item_1get_1submenu_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1menu_1item_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1item_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1item_1new_FUNC);
-	rc = (jlong)gtk_menu_item_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1item_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1menu_1item_1set_1submenu
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1item_1set_1submenu)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1item_1set_1submenu_FUNC);
-	gtk_menu_item_set_submenu((GtkMenuItem *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1item_1set_1submenu_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1menu_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1new_FUNC);
-	rc = (jlong)gtk_menu_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1menu_1popdown
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1popdown)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1popdown_FUNC);
-	gtk_menu_popdown((GtkMenu *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1popdown_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1menu_1popup
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1popup)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4, jint arg5, jint arg6)
@@ -7074,52 +6776,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1menu_1shell_1deactivate
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1shell_1deactivate)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1shell_1deactivate_FUNC);
-	gtk_menu_shell_deactivate((GtkMenuShell *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1shell_1deactivate_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1menu_1shell_1insert
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1shell_1insert)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1shell_1insert_FUNC);
-	gtk_menu_shell_insert((GtkMenuShell *)arg0, (GtkWidget *)arg1, (gint)arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1shell_1insert_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1menu_1shell_1set_1take_1focus
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1shell_1set_1take_1focus)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1shell_1set_1take_1focus_FUNC);
-	gtk_menu_shell_set_take_focus((GtkMenuShell *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1shell_1set_1take_1focus_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1menu_1tool_1button_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1menu_1tool_1button_1new)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
-{
-	jbyte *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1tool_1button_1new_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	rc = (jlong)gtk_menu_tool_button_new((GtkWidget *)arg0, (const gchar *)lparg1);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1tool_1button_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1message_1dialog_1format_1secondary_1text
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1message_1dialog_1format_1secondary_1text)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jbyteArray arg2)
@@ -7156,30 +6812,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1named_1action_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1named_1action_1new)
-	(JNIEnv *env, jclass that, jbyteArray arg0)
-{
-	jbyte *lparg0=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1named_1action_1new_FUNC);
-	if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
-/*
-	rc = (jlong)gtk_named_action_new((const char *)lparg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_named_action_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(const char *))fp)((const char *)lparg0);
-		}
-	}
-fail:
-	if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1named_1action_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1native_1dialog_1show
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1native_1dialog_1show)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -7190,18 +6822,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1native_1get_1surface
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1native_1get_1surface)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1native_1get_1surface_FUNC);
-	rc = (jlong)gtk_native_get_surface((GtkNative *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1native_1get_1surface_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1notebook_1get_1current_1page
 JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1notebook_1get_1current_1page)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -7680,64 +7300,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1popover_1menu_1bar_1new_1from_1model
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1popover_1menu_1bar_1new_1from_1model)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1popover_1menu_1bar_1new_1from_1model_FUNC);
-/*
-	rc = (jlong)gtk_popover_menu_bar_new_from_model((GMenuModel *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_popover_menu_bar_new_from_model)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GMenuModel *))fp)((GMenuModel *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1popover_1menu_1bar_1new_1from_1model_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1popover_1menu_1new_1from_1model_1full
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1popover_1menu_1new_1from_1model_1full)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1popover_1menu_1new_1from_1model_1full_FUNC);
-/*
-	rc = (jlong)gtk_popover_menu_new_from_model_full((GMenuModel *)arg0, (GtkPopoverMenuFlags)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_popover_menu_new_from_model_full)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GMenuModel *, GtkPopoverMenuFlags))fp)((GMenuModel *)arg0, (GtkPopoverMenuFlags)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1popover_1menu_1new_1from_1model_1full_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1popover_1menu_1set_1menu_1model
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1popover_1menu_1set_1menu_1model)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1popover_1menu_1set_1menu_1model_FUNC);
-/*
-	gtk_popover_menu_set_menu_model((GtkPopoverMenu *)arg0, (GMenuModel *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_popover_menu_set_menu_model)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkPopoverMenu *, GMenuModel *))fp)((GtkPopoverMenu *)arg0, (GMenuModel *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1popover_1menu_1set_1menu_1model_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1popover_1popdown
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1popover_1popdown)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -7758,24 +7320,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1popover_1set_1has_1arrow
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1popover_1set_1has_1arrow)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1popover_1set_1has_1arrow_FUNC);
-/*
-	gtk_popover_set_has_arrow((GtkPopover *)arg0, arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_popover_set_has_arrow)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkPopover *, jboolean))fp)((GtkPopover *)arg0, arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1popover_1set_1has_1arrow_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1popover_1set_1pointing_1to
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1popover_1set_1pointing_1to)
 	(JNIEnv *env, jclass that, jlong arg0, jobject arg1)
@@ -8283,30 +7827,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1radio_1menu_1item_1get_1group
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1radio_1menu_1item_1get_1group)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1radio_1menu_1item_1get_1group_FUNC);
-	rc = (jlong)gtk_radio_menu_item_get_group((GtkRadioMenuItem *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1radio_1menu_1item_1get_1group_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1radio_1menu_1item_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1radio_1menu_1item_1new)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1radio_1menu_1item_1new_FUNC);
-	rc = (jlong)gtk_radio_menu_item_new((GSList *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1radio_1menu_1item_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1range_1get_1adjustment
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1range_1get_1adjustment)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -8631,98 +8151,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1selection_1data_1free
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1selection_1data_1free)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1free_FUNC);
-	gtk_selection_data_free((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1free_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1get_1data
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1selection_1data_1get_1data)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1data_FUNC);
-	rc = (jlong)gtk_selection_data_get_data((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1data_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1get_1data_1type
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1selection_1data_1get_1data_1type)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1data_1type_FUNC);
-	rc = (jlong)gtk_selection_data_get_data_type((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1data_1type_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1get_1format
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1selection_1data_1get_1format)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1format_FUNC);
-	rc = (jint)gtk_selection_data_get_format((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1format_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1get_1length
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1selection_1data_1get_1length)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1length_FUNC);
-	rc = (jint)gtk_selection_data_get_length((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1length_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1get_1target
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1selection_1data_1get_1target)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1get_1target_FUNC);
-	rc = (jlong)gtk_selection_data_get_target((GtkSelectionData *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1get_1target_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1selection_1data_1set
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1selection_1data_1set)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jlong arg3, jint arg4)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1selection_1data_1set_FUNC);
-	gtk_selection_data_set((GtkSelectionData *)arg0, (GdkAtom)arg1, (gint)arg2, (const guchar *)arg3, (gint)arg4);
-	GTK_NATIVE_EXIT(env, that, gtk_1selection_1data_1set_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1separator_1menu_1item_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1separator_1menu_1item_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1separator_1menu_1item_1new_FUNC);
-	rc = (jlong)gtk_separator_menu_item_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1separator_1menu_1item_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1separator_1new
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1separator_1new)
 	(JNIEnv *env, jclass that, jint arg0)
@@ -8735,28 +8163,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1separator_1tool_1item_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1separator_1tool_1item_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1separator_1tool_1item_1new_FUNC);
-	rc = (jlong)gtk_separator_tool_item_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1separator_1tool_1item_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1separator_1tool_1item_1set_1draw
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1separator_1tool_1item_1set_1draw)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1separator_1tool_1item_1set_1draw_FUNC);
-	gtk_separator_tool_item_set_draw((GtkSeparatorToolItem *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1separator_1tool_1item_1set_1draw_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1settings_1get_1default
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1settings_1get_1default)
 	(JNIEnv *env, jclass that)
@@ -8769,100 +8175,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1shortcut_1controller_1add_1shortcut
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1shortcut_1controller_1add_1shortcut)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1add_1shortcut_FUNC);
-/*
-	gtk_shortcut_controller_add_shortcut((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_shortcut_controller_add_shortcut)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkShortcutController *, GtkShortcut *))fp)((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1add_1shortcut_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1shortcut_1controller_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1shortcut_1controller_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1new_FUNC);
-/*
-	rc = (jlong)gtk_shortcut_controller_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_shortcut_controller_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1shortcut_1controller_1remove_1shortcut
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1shortcut_1controller_1remove_1shortcut)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1remove_1shortcut_FUNC);
-/*
-	gtk_shortcut_controller_remove_shortcut((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_shortcut_controller_remove_shortcut)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkShortcutController *, GtkShortcut *))fp)((GtkShortcutController *)arg0, (GtkShortcut *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1remove_1shortcut_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1shortcut_1controller_1set_1scope
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1shortcut_1controller_1set_1scope)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1shortcut_1controller_1set_1scope_FUNC);
-/*
-	gtk_shortcut_controller_set_scope((GtkShortcutController *)arg0, (GtkShortcutScope)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_shortcut_controller_set_scope)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkShortcutController *, GtkShortcutScope))fp)((GtkShortcutController *)arg0, (GtkShortcutScope)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1shortcut_1controller_1set_1scope_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1shortcut_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1shortcut_1new)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1shortcut_1new_FUNC);
-/*
-	rc = (jlong)gtk_shortcut_new((GtkShortcutTrigger *)arg0, (GtkShortcutAction *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_shortcut_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkShortcutTrigger *, GtkShortcutAction *))fp)((GtkShortcutTrigger *)arg0, (GtkShortcutAction *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1shortcut_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1snapshot_1append_1cairo
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1snapshot_1append_1cairo)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -9702,18 +9014,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1text_1get_1buffer
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1text_1get_1buffer)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1text_1get_1buffer_FUNC);
-	rc = (jlong)gtk_text_get_buffer((GtkText *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1text_1get_1buffer_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1text_1iter_1get_1line
 JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1text_1iter_1get_1line)
 	(JNIEnv *env, jclass that, jbyteArray arg0)
@@ -10019,200 +9319,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1toggle_1tool_1button_1get_1active
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1toggle_1tool_1button_1get_1active)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1get_1active_FUNC);
-	rc = (jboolean)gtk_toggle_tool_button_get_active((GtkToggleToolButton *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1get_1active_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1toggle_1tool_1button_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1toggle_1tool_1button_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1new_FUNC);
-	rc = (jlong)gtk_toggle_tool_button_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1toggle_1tool_1button_1set_1active
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1toggle_1tool_1button_1set_1active)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1toggle_1tool_1button_1set_1active_FUNC);
-	gtk_toggle_tool_button_set_active((GtkToggleToolButton *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1toggle_1tool_1button_1set_1active_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1button_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1tool_1button_1new)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
-{
-	jbyte *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1button_1new_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	rc = (jlong)gtk_tool_button_new((GtkWidget *)arg0, (const gchar *)lparg1);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1button_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1tool_1button_1set_1icon_1widget
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1button_1set_1icon_1widget)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1icon_1widget_FUNC);
-	gtk_tool_button_set_icon_widget((GtkToolButton *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1icon_1widget_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1button_1set_1label_1widget
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1button_1set_1label_1widget)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1label_1widget_FUNC);
-	gtk_tool_button_set_label_widget((GtkToolButton *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1label_1widget_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1button_1set_1use_1underline
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1button_1set_1use_1underline)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1button_1set_1use_1underline_FUNC);
-	gtk_tool_button_set_use_underline((GtkToolButton *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1button_1set_1use_1underline_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1item_1get_1proxy_1menu_1item
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1tool_1item_1get_1proxy_1menu_1item)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
-{
-	jbyte *lparg1=NULL;
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	rc = (jlong)gtk_tool_item_get_proxy_menu_item((GtkToolItem *)arg0, (const gchar *)lparg1);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1tool_1item_1retrieve_1proxy_1menu_1item
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1tool_1item_1retrieve_1proxy_1menu_1item)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC);
-	rc = (jlong)gtk_tool_item_retrieve_proxy_menu_item((GtkToolItem *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1tool_1item_1set_1homogeneous
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1item_1set_1homogeneous)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1homogeneous_FUNC);
-	gtk_tool_item_set_homogeneous((GtkToolItem *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1homogeneous_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1item_1set_1is_1important
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1item_1set_1is_1important)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1is_1important_FUNC);
-	gtk_tool_item_set_is_important((GtkToolItem *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1is_1important_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1tool_1item_1set_1proxy_1menu_1item
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1tool_1item_1set_1proxy_1menu_1item)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2)
-{
-	jbyte *lparg1=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	gtk_tool_item_set_proxy_menu_item((GtkToolItem *)arg0, (const gchar *)lparg1, (GtkWidget *)arg2);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1toolbar_1insert
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1toolbar_1insert)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1toolbar_1insert_FUNC);
-	gtk_toolbar_insert((GtkToolbar *)arg0, (GtkToolItem *)arg1, arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1toolbar_1insert_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1toolbar_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1toolbar_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1toolbar_1new_FUNC);
-	rc = (jlong)gtk_toolbar_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1toolbar_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1toolbar_1set_1icon_1size
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1toolbar_1set_1icon_1size)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1icon_1size_FUNC);
-	gtk_toolbar_set_icon_size((GtkToolbar *)arg0, arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1icon_1size_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1toolbar_1set_1show_1arrow
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1toolbar_1set_1show_1arrow)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1show_1arrow_FUNC);
-	gtk_toolbar_set_show_arrow((GtkToolbar *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1show_1arrow_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1toolbar_1set_1style
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1toolbar_1set_1style)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1toolbar_1set_1style_FUNC);
-	gtk_toolbar_set_style((GtkToolbar *)arg0, (GtkToolbarStyle)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1toolbar_1set_1style_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1tooltip_1get_1type
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1tooltip_1get_1type)
 	(JNIEnv *env, jclass that)
@@ -13193,48 +12299,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1activate_1default
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1window_1activate_1default)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1activate_1default_FUNC);
-	rc = (jboolean)gtk_window_activate_default((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1activate_1default_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1window_1add_1accel_1group
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1add_1accel_1group)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1add_1accel_1group_FUNC);
-	gtk_window_add_accel_group((GtkWindow *)arg0, (GtkAccelGroup *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1add_1accel_1group_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1deiconify
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1deiconify)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1deiconify_FUNC);
-	gtk_window_deiconify((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1deiconify_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1destroy
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1destroy)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1destroy_FUNC);
-	gtk_window_destroy((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1destroy_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1fullscreen
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1fullscreen)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -13298,42 +12362,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1get_1icon_1list
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1window_1get_1icon_1list)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1get_1icon_1list_FUNC);
-	rc = (jlong)gtk_window_get_icon_list((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1get_1icon_1list_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1window_1get_1icon_1name
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1window_1get_1icon_1name)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1get_1icon_1name_FUNC);
-	rc = (jlong)gtk_window_get_icon_name((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1get_1icon_1name_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1window_1get_1mnemonic_1modifier
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1window_1get_1mnemonic_1modifier)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1get_1mnemonic_1modifier_FUNC);
-	rc = (jint)gtk_window_get_mnemonic_modifier((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1get_1mnemonic_1modifier_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1window_1get_1modal
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1window_1get_1modal)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -13346,48 +12374,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1get_1position
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1get_1position)
-	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
-{
-	jint *lparg1=NULL;
-	jint *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1get_1position_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_window_get_position((GtkWindow *)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_1window_1get_1position_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1get_1size
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1get_1size)
-	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
-{
-	jint *lparg1=NULL;
-	jint *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1get_1size_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_window_get_size((GtkWindow *)arg0, (gint *)lparg1, (gint *)lparg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_window_get_size)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWindow *, gint *, gint *))fp)((GtkWindow *)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_1window_1get_1size_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1group_1add_1window
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1group_1add_1window)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -13420,16 +12406,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1iconify
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1iconify)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1iconify_FUNC);
-	gtk_window_iconify((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1iconify_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1is_1active
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1window_1is_1active)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -13464,98 +12440,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1minimize
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1minimize)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1minimize_FUNC);
-	gtk_window_minimize((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1minimize_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1move
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1move)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1move_FUNC);
-	gtk_window_move((GtkWindow *)arg0, (gint)arg1, (gint)arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1move_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1new__
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1window_1new__)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1new___FUNC);
-	rc = (jlong)gtk_window_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1new___FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1window_1new__I
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1window_1new__I)
-	(JNIEnv *env, jclass that, jint arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1new__I_FUNC);
-	rc = (jlong)gtk_window_new((GtkWindowType)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1new__I_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1window_1remove_1accel_1group
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1remove_1accel_1group)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1remove_1accel_1group_FUNC);
-	gtk_window_remove_accel_group((GtkWindow *)arg0, (GtkAccelGroup *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1remove_1accel_1group_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1resize
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1resize)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1resize_FUNC);
-/*
-	gtk_window_resize((GtkWindow *)arg0, (gint)arg1, (gint)arg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_window_resize)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkWindow *, gint, gint))fp)((GtkWindow *)arg0, (gint)arg1, (gint)arg2);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1resize_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1set_1attached_1to
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1attached_1to)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1attached_1to_FUNC);
-	gtk_window_set_attached_to((GtkWindow *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1attached_1to_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1set_1child
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1child)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1child_FUNC);
-	gtk_window_set_child((GtkWindow *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1child_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1set_1decorated
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1decorated)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -13566,16 +12450,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1set_1default
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1default)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1default_FUNC);
-	gtk_window_set_default((GtkWindow *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1default_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1set_1default_1size
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1default_1size)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
@@ -13586,16 +12460,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1set_1default_1widget
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1default_1widget)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1default_1widget_FUNC);
-	gtk_window_set_default_widget((GtkWindow *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1default_1widget_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1set_1destroy_1with_1parent
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1destroy_1with_1parent)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -13619,26 +12483,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1set_1icon_1name
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1icon_1name)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1icon_1name_FUNC);
-	gtk_window_set_icon_name((GtkWindow *)arg0, (const char *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1icon_1name_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1window_1set_1keep_1above
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1keep_1above)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1keep_1above_FUNC);
-	gtk_window_set_keep_above((GtkWindow *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1keep_1above_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1set_1modal
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1modal)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -13659,16 +12503,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1set_1skip_1taskbar_1hint
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1skip_1taskbar_1hint)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1skip_1taskbar_1hint_FUNC);
-	gtk_window_set_skip_taskbar_hint((GtkWindow *)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1skip_1taskbar_1hint_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1set_1title
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1title)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
@@ -13693,16 +12527,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1set_1type_1hint
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1type_1hint)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1type_1hint_FUNC);
-	gtk_window_set_type_hint((GtkWindow *)arg0, arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1type_1hint_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1window_1unfullscreen
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1unfullscreen)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -13723,16 +12547,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1window_1unminimize
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1unminimize)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1window_1unminimize_FUNC);
-	gtk_window_unminimize((GtkWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1window_1unminimize_FUNC);
-}
-#endif
-
 #ifndef Graphene_NATIVE
 #define Graphene_NATIVE(func) Java_org_eclipse_swt_internal_gtk_Graphene_##func
 #endif
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 be4c7e9..c4c691f 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
@@ -349,79 +349,10 @@
 #define NO_gdk_1keymap_1translate_1keyboard_1state
 #define NO_gdk_1keymap_1get_1entries_1for_1keyval
 
-// GtkToolbar & toolbar item related objects removed
-#define NO_gtk_1toolbar_1new
-#define NO_gtk_1toolbar_1insert
-#define NO_gtk_1toolbar_1set_1icon_1size
-#define NO_gtk_1toolbar_1set_1style
-#define NO_gtk_1toolbar_1set_1show_1arrow
-#define NO_gtk_1separator_1tool_1item_1new
-#define NO_gtk_1separator_1tool_1item_1set_1draw
-#define NO_gtk_1toggle_1tool_1button_1new
-#define NO_gtk_1toggle_1tool_1button_1get_1active
-#define NO_gtk_1toggle_1tool_1button_1set_1active
-#define NO_gtk_1tool_1button_1new
-#define NO_gtk_1tool_1button_1set_1label_1widget
-#define NO_gtk_1tool_1button_1set_1icon_1widget
-#define NO_gtk_1tool_1button_1set_1use_1underline
-#define NO_gtk_1tool_1item_1set_1homogeneous
-#define NO_gtk_1tool_1item_1set_1is_1important
-#define NO_gtk_1tool_1item_1retrieve_1proxy_1menu_1item
-#define NO_gtk_1tool_1item_1set_1proxy_1menu_1item
-#define NO_gtk_1tool_1item_1get_1proxy_1menu_1item
-#define NO_gtk_1menu_1tool_1button_1new
-
-// GtkMenu, GtkMenuBar and GtkMenuItem removed
-#define NO_GTK_1TYPE_1MENU
-#define NO_GTK_1IS_1MENU_1ITEM
-#define NO_gtk_1menu_1bar_1new
-#define NO_gtk_1menu_1new
-#define NO_gtk_1menu_1popdown
-#define NO_gtk_1menu_1item_1new
-#define NO_gtk_1menu_1item_1set_1submenu
-#define NO_gtk_1menu_1item_1get_1submenu
-#define NO_gtk_1menu_1shell_1insert
-#define NO_gtk_1menu_1shell_1set_1take_1focus
-#define NO_gtk_1menu_1shell_1deactivate
-#define NO_gtk_1separator_1menu_1item_1new
-#define NO_gtk_1radio_1menu_1item_1new
-#define NO_gtk_1radio_1menu_1item_1get_1group
-#define NO_gtk_1check_1menu_1item_1new
-#define NO_gtk_1check_1menu_1item_1set_1active
-#define NO_gtk_1check_1menu_1item_1get_1active
-
-// GtkWindow changes
-#define NO_gtk_1window_1new__I
-#define NO_gtk_1window_1set_1default
-#define NO_gtk_1window_1deiconify
-#define NO_gtk_1window_1iconify
-#define NO_gtk_1window_1activate_1default
-#define NO_gtk_1window_1set_1type_1hint
-#define NO_gtk_1window_1set_1skip_1taskbar_1hint
-#define NO_gtk_1window_1set_1keep_1above
-#define NO_gtk_1window_1set_1icon_1list
-#define NO_gtk_1window_1get_1icon_1list
-#define NO_gtk_1window_1set_1attached_1to
-#define NO_gtk_1window_1move
-#define NO_gtk_1window_1get_1position
-#define NO_gtk_1window_1get_1mnemonic_1modifier
-
 // No GtkShadowType in GTK4
 #define NO_gtk_1viewport_1set_1shadow_1type
 #define NO_gtk_1frame_1set_1shadow_1type
 
-// GtkIconTheme API changes
-#define NO_gtk_1icon_1info_1load_1icon
-
-// GtkSelectionData removed
-#define NO_gtk_1selection_1data_1free
-#define NO_gtk_1selection_1data_1get_1data
-#define NO_gtk_1selection_1data_1get_1data_1type
-#define NO_gtk_1selection_1data_1get_1format
-#define NO_gtk_1selection_1data_1get_1length
-#define NO_gtk_1selection_1data_1get_1target
-#define NO_gtk_1selection_1data_1set
-
 // GdkAtom removed
 #define NO_gtk_1drag_1get_1data__JJJ
 #define NO_gdk_1text_1property_1to_1utf8_1list_1for_1display
@@ -433,8 +364,6 @@
 // GtkAccelGroup removed
 #define NO_gtk_1widget_1add_1accelerator
 #define NO_gtk_1widget_1remove_1accelerator
-#define NO_gtk_1window_1add_1accel_1group
-#define NO_gtk_1window_1remove_1accel_1group
 
 // Accessibility interface changes
 #define NO_GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE
@@ -526,27 +455,11 @@
 // GdkCursor API changes
 #define NO_gdk_1cursor_1new_1from_1name__Ljava_lang_String_2J
 
-// No GtkNative on GTK3
-#define NO_gtk_1native_1get_1surface
-
 // No GdkPopup on GTK3
 #define NO_gdk_1popup_1get_1parent
 #define NO_gdk_1popup_1layout_1new
 #define NO_gdk_1popup_1present
 
-// GtkWindow changes
-#define NO_gtk_1window_1new__
-#define NO_gtk_1window_1minimize
-#define NO_gtk_1window_1unminimize
-#define NO_gtk_1window_1set_1default_1widget
-#define NO_gtk_1window_1set_1child
-#define NO_gtk_1window_1destroy
-
-// GtkIconTheme API changes
-#define NO_gtk_1icon_1theme_1get_1for_1display
-#define NO_gtk_1icon_1theme_1lookup_1icon
-#define NO_gtk_1icon_1theme_1lookup_1by_1gicon__JJIIII
-
 // GtkTreeViewColumn
 #define NO_gtk_1tree_1view_1column_1cell_1get_1size__J_3I_3I_3I_3I
 
@@ -554,22 +467,6 @@
 #define NO_swt_1fixed_1add
 #define NO_swt_1fixed_1remove
 
-// GtkShortcut and related functions
-#define NO_gtk_1shortcut_1controller_1add_1shortcut
-#define NO_gtk_1shortcut_1controller_1remove_1shortcut
-#define NO_gtk_1shortcut_1controller_1new
-#define NO_gtk_1shortcut_1controller_1set_1scope
-#define NO_gtk_1shortcut_1new
-
-// No GtkIconPaintable
-#define NO_gtk_1icon_1paintable_1get_1file
-
-// No GtkText
-#define NO_gtk_1text_1get_1buffer
-// No GtkPopoverMenuFlags
-#define NO_gtk_1popover_1menu_1new_1from_1model_1full
-
-
 #endif
 
 #include "os_custom.h"
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 65f4660..7b7febf 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
@@ -293,7 +293,6 @@
 	"GTK_1IS_1CONTAINER",
 	"GTK_1IS_1IM_1CONTEXT",
 	"GTK_1IS_1LABEL",
-	"GTK_1IS_1MENU_1ITEM",
 	"GTK_1IS_1PLUG",
 	"GTK_1IS_1SCROLLED_1WINDOW",
 	"GTK_1IS_1WINDOW",
@@ -301,7 +300,6 @@
 	"GTK_1TYPE_1CELL_1RENDERER_1TEXT",
 	"GTK_1TYPE_1CELL_1RENDERER_1TOGGLE",
 	"GTK_1TYPE_1IM_1MULTICONTEXT",
-	"GTK_1TYPE_1MENU",
 	"GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE",
 	"GTK_1TYPE_1WIDGET",
 	"GTK_1TYPE_1WINDOW",
@@ -359,9 +357,6 @@
 	"gtk_1cell_1renderer_1toggle_1new",
 	"gtk_1cell_1view_1set_1fit_1model",
 	"gtk_1check_1button_1new",
-	"gtk_1check_1menu_1item_1get_1active",
-	"gtk_1check_1menu_1item_1new",
-	"gtk_1check_1menu_1item_1set_1active",
 	"gtk_1check_1version",
 	"gtk_1color_1chooser_1add_1palette",
 	"gtk_1color_1chooser_1dialog_1new",
@@ -479,13 +474,6 @@
 	"gtk_1get_1major_1version",
 	"gtk_1get_1micro_1version",
 	"gtk_1get_1minor_1version",
-	"gtk_1icon_1info_1load_1icon",
-	"gtk_1icon_1paintable_1get_1file",
-	"gtk_1icon_1theme_1get_1default",
-	"gtk_1icon_1theme_1get_1for_1display",
-	"gtk_1icon_1theme_1load_1icon",
-	"gtk_1icon_1theme_1lookup_1by_1gicon",
-	"gtk_1icon_1theme_1lookup_1icon",
 	"gtk_1im_1context_1focus_1in",
 	"gtk_1im_1context_1focus_1out",
 	"gtk_1im_1context_1get_1preedit_1string",
@@ -503,7 +491,6 @@
 	"gtk_1image_1set_1from_1paintable",
 	"gtk_1image_1set_1from_1surface",
 	"gtk_1image_1set_1pixel_1size",
-	"gtk_1keyval_1trigger_1new",
 	"gtk_1label_1get_1layout",
 	"gtk_1label_1get_1mnemonic_1keyval",
 	"gtk_1label_1get_1type",
@@ -530,26 +517,14 @@
 	"gtk_1list_1store_1set__JJILorg_eclipse_swt_internal_gtk_GdkRGBA_2I",
 	"gtk_1list_1store_1set__JJIZI",
 	"gtk_1list_1store_1set__JJI_3BI",
-	"gtk_1menu_1bar_1new",
 	"gtk_1menu_1button_1new",
 	"gtk_1menu_1button_1set_1use_1underline",
-	"gtk_1menu_1item_1get_1submenu",
-	"gtk_1menu_1item_1new",
-	"gtk_1menu_1item_1set_1submenu",
-	"gtk_1menu_1new",
-	"gtk_1menu_1popdown",
 	"gtk_1menu_1popup",
 	"gtk_1menu_1popup_1at_1pointer",
 	"gtk_1menu_1popup_1at_1rect",
-	"gtk_1menu_1shell_1deactivate",
-	"gtk_1menu_1shell_1insert",
-	"gtk_1menu_1shell_1set_1take_1focus",
-	"gtk_1menu_1tool_1button_1new",
 	"gtk_1message_1dialog_1format_1secondary_1text",
 	"gtk_1message_1dialog_1new",
-	"gtk_1named_1action_1new",
 	"gtk_1native_1dialog_1show",
-	"gtk_1native_1get_1surface",
 	"gtk_1notebook_1get_1current_1page",
 	"gtk_1notebook_1get_1n_1pages",
 	"gtk_1notebook_1get_1scrollable",
@@ -591,12 +566,8 @@
 	"gtk_1paper_1size_1new_1custom",
 	"gtk_1paper_1size_1new_1from_1ppd",
 	"gtk_1plug_1new",
-	"gtk_1popover_1menu_1bar_1new_1from_1model",
-	"gtk_1popover_1menu_1new_1from_1model_1full",
-	"gtk_1popover_1menu_1set_1menu_1model",
 	"gtk_1popover_1popdown",
 	"gtk_1popover_1popup",
-	"gtk_1popover_1set_1has_1arrow",
 	"gtk_1popover_1set_1pointing_1to",
 	"gtk_1popover_1set_1position",
 	"gtk_1print_1job_1get_1surface",
@@ -639,8 +610,6 @@
 	"gtk_1progress_1bar_1pulse",
 	"gtk_1progress_1bar_1set_1fraction",
 	"gtk_1progress_1bar_1set_1inverted",
-	"gtk_1radio_1menu_1item_1get_1group",
-	"gtk_1radio_1menu_1item_1new",
 	"gtk_1range_1get_1adjustment",
 	"gtk_1range_1get_1slider_1range",
 	"gtk_1range_1get_1value",
@@ -668,23 +637,8 @@
 	"gtk_1scrolled_1window_1set_1policy",
 	"gtk_1scrolled_1window_1set_1vadjustment",
 	"gtk_1search_1entry_1new",
-	"gtk_1selection_1data_1free",
-	"gtk_1selection_1data_1get_1data",
-	"gtk_1selection_1data_1get_1data_1type",
-	"gtk_1selection_1data_1get_1format",
-	"gtk_1selection_1data_1get_1length",
-	"gtk_1selection_1data_1get_1target",
-	"gtk_1selection_1data_1set",
-	"gtk_1separator_1menu_1item_1new",
 	"gtk_1separator_1new",
-	"gtk_1separator_1tool_1item_1new",
-	"gtk_1separator_1tool_1item_1set_1draw",
 	"gtk_1settings_1get_1default",
-	"gtk_1shortcut_1controller_1add_1shortcut",
-	"gtk_1shortcut_1controller_1new",
-	"gtk_1shortcut_1controller_1remove_1shortcut",
-	"gtk_1shortcut_1controller_1set_1scope",
-	"gtk_1shortcut_1new",
 	"gtk_1snapshot_1append_1cairo",
 	"gtk_1socket_1get_1id",
 	"gtk_1socket_1new",
@@ -740,7 +694,6 @@
 	"gtk_1text_1buffer_1place_1cursor",
 	"gtk_1text_1buffer_1select_1range",
 	"gtk_1text_1buffer_1set_1text",
-	"gtk_1text_1get_1buffer",
 	"gtk_1text_1iter_1get_1line",
 	"gtk_1text_1iter_1get_1offset",
 	"gtk_1text_1view_1buffer_1to_1window_1coords",
@@ -763,23 +716,6 @@
 	"gtk_1toggle_1button_1new",
 	"gtk_1toggle_1button_1set_1active",
 	"gtk_1toggle_1button_1set_1inconsistent",
-	"gtk_1toggle_1tool_1button_1get_1active",
-	"gtk_1toggle_1tool_1button_1new",
-	"gtk_1toggle_1tool_1button_1set_1active",
-	"gtk_1tool_1button_1new",
-	"gtk_1tool_1button_1set_1icon_1widget",
-	"gtk_1tool_1button_1set_1label_1widget",
-	"gtk_1tool_1button_1set_1use_1underline",
-	"gtk_1tool_1item_1get_1proxy_1menu_1item",
-	"gtk_1tool_1item_1retrieve_1proxy_1menu_1item",
-	"gtk_1tool_1item_1set_1homogeneous",
-	"gtk_1tool_1item_1set_1is_1important",
-	"gtk_1tool_1item_1set_1proxy_1menu_1item",
-	"gtk_1toolbar_1insert",
-	"gtk_1toolbar_1new",
-	"gtk_1toolbar_1set_1icon_1size",
-	"gtk_1toolbar_1set_1show_1arrow",
-	"gtk_1toolbar_1set_1style",
 	"gtk_1tooltip_1get_1type",
 	"gtk_1tooltip_1set_1custom",
 	"gtk_1tree_1model_1get__JJI_3II",
@@ -989,53 +925,28 @@
 	"gtk_1widget_1translate_1coordinates__JJDD_3D_3D",
 	"gtk_1widget_1translate_1coordinates__JJII_3I_3I",
 	"gtk_1widget_1unparent",
-	"gtk_1window_1activate_1default",
-	"gtk_1window_1add_1accel_1group",
-	"gtk_1window_1deiconify",
-	"gtk_1window_1destroy",
 	"gtk_1window_1fullscreen",
 	"gtk_1window_1get_1default_1size",
 	"gtk_1window_1get_1default_1widget",
 	"gtk_1window_1get_1focus",
 	"gtk_1window_1get_1group",
-	"gtk_1window_1get_1icon_1list",
-	"gtk_1window_1get_1icon_1name",
-	"gtk_1window_1get_1mnemonic_1modifier",
 	"gtk_1window_1get_1modal",
-	"gtk_1window_1get_1position",
-	"gtk_1window_1get_1size",
 	"gtk_1window_1group_1add_1window",
 	"gtk_1window_1group_1new",
 	"gtk_1window_1group_1remove_1window",
-	"gtk_1window_1iconify",
 	"gtk_1window_1is_1active",
 	"gtk_1window_1list_1toplevels",
 	"gtk_1window_1maximize",
-	"gtk_1window_1minimize",
-	"gtk_1window_1move",
-	"gtk_1window_1new__",
-	"gtk_1window_1new__I",
-	"gtk_1window_1remove_1accel_1group",
-	"gtk_1window_1resize",
-	"gtk_1window_1set_1attached_1to",
-	"gtk_1window_1set_1child",
 	"gtk_1window_1set_1decorated",
-	"gtk_1window_1set_1default",
 	"gtk_1window_1set_1default_1size",
-	"gtk_1window_1set_1default_1widget",
 	"gtk_1window_1set_1destroy_1with_1parent",
 	"gtk_1window_1set_1geometry_1hints",
-	"gtk_1window_1set_1icon_1name",
-	"gtk_1window_1set_1keep_1above",
 	"gtk_1window_1set_1modal",
 	"gtk_1window_1set_1resizable",
-	"gtk_1window_1set_1skip_1taskbar_1hint",
 	"gtk_1window_1set_1title",
 	"gtk_1window_1set_1transient_1for",
-	"gtk_1window_1set_1type_1hint",
 	"gtk_1window_1unfullscreen",
 	"gtk_1window_1unmaximize",
-	"gtk_1window_1unminimize",
 };
 #define NATIVE_FUNCTION_COUNT sizeof(GTK_nativeFunctionNames) / sizeof(char*)
 int GTK_nativeFunctionCount = NATIVE_FUNCTION_COUNT;
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 3b81c6d..c18f596 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
@@ -291,7 +291,6 @@
 	GTK_1IS_1CONTAINER_FUNC,
 	GTK_1IS_1IM_1CONTEXT_FUNC,
 	GTK_1IS_1LABEL_FUNC,
-	GTK_1IS_1MENU_1ITEM_FUNC,
 	GTK_1IS_1PLUG_FUNC,
 	GTK_1IS_1SCROLLED_1WINDOW_FUNC,
 	GTK_1IS_1WINDOW_FUNC,
@@ -299,7 +298,6 @@
 	GTK_1TYPE_1CELL_1RENDERER_1TEXT_FUNC,
 	GTK_1TYPE_1CELL_1RENDERER_1TOGGLE_FUNC,
 	GTK_1TYPE_1IM_1MULTICONTEXT_FUNC,
-	GTK_1TYPE_1MENU_FUNC,
 	GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE_FUNC,
 	GTK_1TYPE_1WIDGET_FUNC,
 	GTK_1TYPE_1WINDOW_FUNC,
@@ -357,9 +355,6 @@
 	gtk_1cell_1renderer_1toggle_1new_FUNC,
 	gtk_1cell_1view_1set_1fit_1model_FUNC,
 	gtk_1check_1button_1new_FUNC,
-	gtk_1check_1menu_1item_1get_1active_FUNC,
-	gtk_1check_1menu_1item_1new_FUNC,
-	gtk_1check_1menu_1item_1set_1active_FUNC,
 	gtk_1check_1version_FUNC,
 	gtk_1color_1chooser_1add_1palette_FUNC,
 	gtk_1color_1chooser_1dialog_1new_FUNC,
@@ -477,13 +472,6 @@
 	gtk_1get_1major_1version_FUNC,
 	gtk_1get_1micro_1version_FUNC,
 	gtk_1get_1minor_1version_FUNC,
-	gtk_1icon_1info_1load_1icon_FUNC,
-	gtk_1icon_1paintable_1get_1file_FUNC,
-	gtk_1icon_1theme_1get_1default_FUNC,
-	gtk_1icon_1theme_1get_1for_1display_FUNC,
-	gtk_1icon_1theme_1load_1icon_FUNC,
-	gtk_1icon_1theme_1lookup_1by_1gicon_FUNC,
-	gtk_1icon_1theme_1lookup_1icon_FUNC,
 	gtk_1im_1context_1focus_1in_FUNC,
 	gtk_1im_1context_1focus_1out_FUNC,
 	gtk_1im_1context_1get_1preedit_1string_FUNC,
@@ -501,7 +489,6 @@
 	gtk_1image_1set_1from_1paintable_FUNC,
 	gtk_1image_1set_1from_1surface_FUNC,
 	gtk_1image_1set_1pixel_1size_FUNC,
-	gtk_1keyval_1trigger_1new_FUNC,
 	gtk_1label_1get_1layout_FUNC,
 	gtk_1label_1get_1mnemonic_1keyval_FUNC,
 	gtk_1label_1get_1type_FUNC,
@@ -528,26 +515,14 @@
 	gtk_1list_1store_1set__JJILorg_eclipse_swt_internal_gtk_GdkRGBA_2I_FUNC,
 	gtk_1list_1store_1set__JJIZI_FUNC,
 	gtk_1list_1store_1set__JJI_3BI_FUNC,
-	gtk_1menu_1bar_1new_FUNC,
 	gtk_1menu_1button_1new_FUNC,
 	gtk_1menu_1button_1set_1use_1underline_FUNC,
-	gtk_1menu_1item_1get_1submenu_FUNC,
-	gtk_1menu_1item_1new_FUNC,
-	gtk_1menu_1item_1set_1submenu_FUNC,
-	gtk_1menu_1new_FUNC,
-	gtk_1menu_1popdown_FUNC,
 	gtk_1menu_1popup_FUNC,
 	gtk_1menu_1popup_1at_1pointer_FUNC,
 	gtk_1menu_1popup_1at_1rect_FUNC,
-	gtk_1menu_1shell_1deactivate_FUNC,
-	gtk_1menu_1shell_1insert_FUNC,
-	gtk_1menu_1shell_1set_1take_1focus_FUNC,
-	gtk_1menu_1tool_1button_1new_FUNC,
 	gtk_1message_1dialog_1format_1secondary_1text_FUNC,
 	gtk_1message_1dialog_1new_FUNC,
-	gtk_1named_1action_1new_FUNC,
 	gtk_1native_1dialog_1show_FUNC,
-	gtk_1native_1get_1surface_FUNC,
 	gtk_1notebook_1get_1current_1page_FUNC,
 	gtk_1notebook_1get_1n_1pages_FUNC,
 	gtk_1notebook_1get_1scrollable_FUNC,
@@ -589,12 +564,8 @@
 	gtk_1paper_1size_1new_1custom_FUNC,
 	gtk_1paper_1size_1new_1from_1ppd_FUNC,
 	gtk_1plug_1new_FUNC,
-	gtk_1popover_1menu_1bar_1new_1from_1model_FUNC,
-	gtk_1popover_1menu_1new_1from_1model_1full_FUNC,
-	gtk_1popover_1menu_1set_1menu_1model_FUNC,
 	gtk_1popover_1popdown_FUNC,
 	gtk_1popover_1popup_FUNC,
-	gtk_1popover_1set_1has_1arrow_FUNC,
 	gtk_1popover_1set_1pointing_1to_FUNC,
 	gtk_1popover_1set_1position_FUNC,
 	gtk_1print_1job_1get_1surface_FUNC,
@@ -637,8 +608,6 @@
 	gtk_1progress_1bar_1pulse_FUNC,
 	gtk_1progress_1bar_1set_1fraction_FUNC,
 	gtk_1progress_1bar_1set_1inverted_FUNC,
-	gtk_1radio_1menu_1item_1get_1group_FUNC,
-	gtk_1radio_1menu_1item_1new_FUNC,
 	gtk_1range_1get_1adjustment_FUNC,
 	gtk_1range_1get_1slider_1range_FUNC,
 	gtk_1range_1get_1value_FUNC,
@@ -666,23 +635,8 @@
 	gtk_1scrolled_1window_1set_1policy_FUNC,
 	gtk_1scrolled_1window_1set_1vadjustment_FUNC,
 	gtk_1search_1entry_1new_FUNC,
-	gtk_1selection_1data_1free_FUNC,
-	gtk_1selection_1data_1get_1data_FUNC,
-	gtk_1selection_1data_1get_1data_1type_FUNC,
-	gtk_1selection_1data_1get_1format_FUNC,
-	gtk_1selection_1data_1get_1length_FUNC,
-	gtk_1selection_1data_1get_1target_FUNC,
-	gtk_1selection_1data_1set_FUNC,
-	gtk_1separator_1menu_1item_1new_FUNC,
 	gtk_1separator_1new_FUNC,
-	gtk_1separator_1tool_1item_1new_FUNC,
-	gtk_1separator_1tool_1item_1set_1draw_FUNC,
 	gtk_1settings_1get_1default_FUNC,
-	gtk_1shortcut_1controller_1add_1shortcut_FUNC,
-	gtk_1shortcut_1controller_1new_FUNC,
-	gtk_1shortcut_1controller_1remove_1shortcut_FUNC,
-	gtk_1shortcut_1controller_1set_1scope_FUNC,
-	gtk_1shortcut_1new_FUNC,
 	gtk_1snapshot_1append_1cairo_FUNC,
 	gtk_1socket_1get_1id_FUNC,
 	gtk_1socket_1new_FUNC,
@@ -738,7 +692,6 @@
 	gtk_1text_1buffer_1place_1cursor_FUNC,
 	gtk_1text_1buffer_1select_1range_FUNC,
 	gtk_1text_1buffer_1set_1text_FUNC,
-	gtk_1text_1get_1buffer_FUNC,
 	gtk_1text_1iter_1get_1line_FUNC,
 	gtk_1text_1iter_1get_1offset_FUNC,
 	gtk_1text_1view_1buffer_1to_1window_1coords_FUNC,
@@ -761,23 +714,6 @@
 	gtk_1toggle_1button_1new_FUNC,
 	gtk_1toggle_1button_1set_1active_FUNC,
 	gtk_1toggle_1button_1set_1inconsistent_FUNC,
-	gtk_1toggle_1tool_1button_1get_1active_FUNC,
-	gtk_1toggle_1tool_1button_1new_FUNC,
-	gtk_1toggle_1tool_1button_1set_1active_FUNC,
-	gtk_1tool_1button_1new_FUNC,
-	gtk_1tool_1button_1set_1icon_1widget_FUNC,
-	gtk_1tool_1button_1set_1label_1widget_FUNC,
-	gtk_1tool_1button_1set_1use_1underline_FUNC,
-	gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC,
-	gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC,
-	gtk_1tool_1item_1set_1homogeneous_FUNC,
-	gtk_1tool_1item_1set_1is_1important_FUNC,
-	gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC,
-	gtk_1toolbar_1insert_FUNC,
-	gtk_1toolbar_1new_FUNC,
-	gtk_1toolbar_1set_1icon_1size_FUNC,
-	gtk_1toolbar_1set_1show_1arrow_FUNC,
-	gtk_1toolbar_1set_1style_FUNC,
 	gtk_1tooltip_1get_1type_FUNC,
 	gtk_1tooltip_1set_1custom_FUNC,
 	gtk_1tree_1model_1get__JJI_3II_FUNC,
@@ -987,53 +923,28 @@
 	gtk_1widget_1translate_1coordinates__JJDD_3D_3D_FUNC,
 	gtk_1widget_1translate_1coordinates__JJII_3I_3I_FUNC,
 	gtk_1widget_1unparent_FUNC,
-	gtk_1window_1activate_1default_FUNC,
-	gtk_1window_1add_1accel_1group_FUNC,
-	gtk_1window_1deiconify_FUNC,
-	gtk_1window_1destroy_FUNC,
 	gtk_1window_1fullscreen_FUNC,
 	gtk_1window_1get_1default_1size_FUNC,
 	gtk_1window_1get_1default_1widget_FUNC,
 	gtk_1window_1get_1focus_FUNC,
 	gtk_1window_1get_1group_FUNC,
-	gtk_1window_1get_1icon_1list_FUNC,
-	gtk_1window_1get_1icon_1name_FUNC,
-	gtk_1window_1get_1mnemonic_1modifier_FUNC,
 	gtk_1window_1get_1modal_FUNC,
-	gtk_1window_1get_1position_FUNC,
-	gtk_1window_1get_1size_FUNC,
 	gtk_1window_1group_1add_1window_FUNC,
 	gtk_1window_1group_1new_FUNC,
 	gtk_1window_1group_1remove_1window_FUNC,
-	gtk_1window_1iconify_FUNC,
 	gtk_1window_1is_1active_FUNC,
 	gtk_1window_1list_1toplevels_FUNC,
 	gtk_1window_1maximize_FUNC,
-	gtk_1window_1minimize_FUNC,
-	gtk_1window_1move_FUNC,
-	gtk_1window_1new___FUNC,
-	gtk_1window_1new__I_FUNC,
-	gtk_1window_1remove_1accel_1group_FUNC,
-	gtk_1window_1resize_FUNC,
-	gtk_1window_1set_1attached_1to_FUNC,
-	gtk_1window_1set_1child_FUNC,
 	gtk_1window_1set_1decorated_FUNC,
-	gtk_1window_1set_1default_FUNC,
 	gtk_1window_1set_1default_1size_FUNC,
-	gtk_1window_1set_1default_1widget_FUNC,
 	gtk_1window_1set_1destroy_1with_1parent_FUNC,
 	gtk_1window_1set_1geometry_1hints_FUNC,
-	gtk_1window_1set_1icon_1name_FUNC,
-	gtk_1window_1set_1keep_1above_FUNC,
 	gtk_1window_1set_1modal_FUNC,
 	gtk_1window_1set_1resizable_FUNC,
-	gtk_1window_1set_1skip_1taskbar_1hint_FUNC,
 	gtk_1window_1set_1title_FUNC,
 	gtk_1window_1set_1transient_1for_FUNC,
-	gtk_1window_1set_1type_1hint_FUNC,
 	gtk_1window_1unfullscreen_FUNC,
 	gtk_1window_1unmaximize_FUNC,
-	gtk_1window_1unminimize_FUNC,
 } GTK_FUNCS;
 #ifdef NATIVE_STATS
 extern int Graphene_nativeFunctionCount;
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 4f341c0..c999488 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
@@ -233,7 +233,6 @@
 	public static final native boolean GTK_IS_CELL_RENDERER_PIXBUF(long obj);
 	public static final native boolean GTK_IS_CELL_RENDERER_TEXT(long obj);
 	public static final native boolean GTK_IS_CELL_RENDERER_TOGGLE(long obj);
-	public static final native boolean GTK_IS_MENU_ITEM(long obj);
 	public static final native boolean GTK_IS_PLUG(long obj);
 	/** @method flags=const */
 	public static final native long GTK_TYPE_CELL_RENDERER_TEXT();
@@ -244,8 +243,6 @@
 	/** @method flags=const */
 	public static final native long GTK_TYPE_IM_MULTICONTEXT();
 	/** @method flags=const */
-	public static final native long GTK_TYPE_MENU();
-	/** @method flags=const */
 	public static final native long GTK_TYPE_WIDGET();
 	/** @method flags=const */
 	public static final native long GTK_TYPE_WINDOW();
@@ -836,61 +833,11 @@
 	/** @param gesture cast=(GtkGestureSingle *) */
 	public static final native int gtk_gesture_single_get_current_button(long gesture);
 
-
-
-
 	/* GtkGestureClick [GTK4 only] */
 	/** @method flags=dynamic */
 	public static final native long gtk_gesture_click_new();
 
 
-	/* GtkShortcutController [GTK4 only] */
-	/** @method flags=dynamic */
-	public static final native long gtk_shortcut_controller_new();
-	/**
-	 * @method flags=dynamic
-	 * @param controller cast=(GtkShortcutController *)
-	 * @param scope cast=(GtkShortcutScope)
-	 */
-	public static final native void gtk_shortcut_controller_set_scope(long controller, int scope);
-	/**
-	 * @method flags=dynamic
-	 * @param controller cast=(GtkShortcutController *)
-	 * @param shortcut cast=(GtkShortcut *)
-	 */
-	public static final native void gtk_shortcut_controller_add_shortcut(long controller, long shortcut);
-	/**
-	 * @method flags=dynamic
-	 * @param controller cast=(GtkShortcutController *)
-	 * @param shortcut cast=(GtkShortcut *)
-	 */
-	public static final native void gtk_shortcut_controller_remove_shortcut(long controller, long shortcut);
-
-	/* GtkShortcut [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param trigger cast=(GtkShortcutTrigger *)
-	 * @param action cast=(GtkShortcutAction *)
-	 */
-	public static final native long gtk_shortcut_new(long trigger, long action);
-
-
-	/* GtkShortcutTrigger [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param keyval cast=(guint)
-	 * @param modifiers cast=(GdkModifierType)
-	 */
-	public static final native long gtk_keyval_trigger_new(int keyval, int modifiers);
-
-
-	/* GtkShortcutAction [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param name cast=(const char *)
-	 */
-	public static final native long gtk_named_action_new(byte[] name);
-
 	/**
 	 * @method flags=dynamic
 	 * @param title cast=(const gchar *),flags=no_out
@@ -1041,60 +988,6 @@
 	// See os_custom.h
 	public static final native long gtk_status_icon_position_menu_func();
 
-	/* GtkIconTheme [GTK3 only, if-def'd in os.h] */
-	/**
-	 * @method flags=dynamic
-	 * @param icon_info cast=(GtkIconInfo *)
-	 * @param error cast=(GError **)
-	 */
-	public static final native long gtk_icon_info_load_icon(long icon_info, long error[]);
-	/** @method flags=dynamic */
-	public static final native long gtk_icon_theme_get_default();
-	/**
-	 * @method flags=dynamic
-	 * @param icon_theme cast=(GtkIconTheme *)
-	 * @param icon_name cast=(const gchar *)
-	 * @param size cast=(gint)
-	 * @param flags cast=(GtkIconLookupFlags)
-	 * @param error cast=(GError **)
-	 */
-	public static final native long gtk_icon_theme_load_icon(long icon_theme, byte[] icon_name, int size, int flags, long error);
-	/**
-	 * @method flags=dynamic
-	 * @param icon_theme cast=(GtkIconTheme *)
-	 * @param icon cast=(GIcon *)
-	 * @param size cast=(gint)
-	 * @param flags cast=(GtkIconLookupFlags)
-	 */
-	public static final native long gtk_icon_theme_lookup_by_gicon(long icon_theme, long icon, int size, int flags);
-
-	/* GtkIconTheme [GTK4 only, if-def'd in os.h] */
-	/**
-	 * @method flags=dynamic
-	 * @param display cast=(GdkDisplay *)
-	 */
-	public static final native long gtk_icon_theme_get_for_display(long display);
-	/**
-	 * @method flags=dynamic
-	 * @param self cast=(GtkIconTheme *)
-	 * @param icon_name cast=(const char *)
-	 * @param fallbacks cast=(const char **)
-	 * @param size cast=(gint)
-	 * @param scale cast=(gint)
-	 * @param direction cast=(GtkTextDirection)
-	 * @param flags cast=(GtkIconLookupFlags)
-	 */
-	public static final native long gtk_icon_theme_lookup_icon(long self, byte[] icon_name, long fallbacks, int size, int scale, int direction, int flags);
-
-
-	/* GtkIconPaintable [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param paintable cast=(GtkIconPaintable *)
-	 */
-	public static final native long gtk_icon_paintable_get_file(long paintable);
-
-
 	/** @param context cast=(GtkIMContext *) */
 	public static final native void gtk_im_context_focus_in(long context);
 	/** @param context cast=(GtkIMContext *) */
@@ -1353,48 +1246,6 @@
 	/** @method flags=dynamic */
 	public static final native void gtk_menu_popup_at_rect(long menu, long rect_window, GdkRectangle rect, int rect_anchor, int menu_anchor, long trigger_event);
 
-	/* GtkMenu/GtkMenuItem [GTK3 only, if-def'd in os.h] */
-	public static final native long gtk_menu_bar_new();
-	/** @param menu_item cast=(GtkMenuItem *) */
-	public static final native long gtk_menu_item_get_submenu(long menu_item);
-	public static final native long gtk_menu_item_new();
-	/**
-	 * @param menu_item cast=(GtkMenuItem *)
-	 * @param submenu cast=(GtkWidget *)
-	 */
-	public static final native void gtk_menu_item_set_submenu(long menu_item, long submenu);
-	public static final native long gtk_menu_new();
-	/** @param menu cast=(GtkMenu *) */
-	public static final native void gtk_menu_popdown(long menu);
-	/** @param menu_shell cast=(GtkMenuShell *) */
-	public static final native void gtk_menu_shell_deactivate(long menu_shell);
-	/**
-	 * @param menu_shell cast=(GtkMenuShell *)
-	 * @param child cast=(GtkWidget *)
-	 * @param position cast=(gint)
-	 */
-	public static final native void gtk_menu_shell_insert(long menu_shell, long child, int position);
-	/**
-	 * @param menu_shell cast=(GtkMenuShell *)
-	 * @param take_focus cast=(gboolean)
-	 */
-	public static final native void gtk_menu_shell_set_take_focus(long menu_shell, boolean take_focus);
-
-	/** @param check_menu_item cast=(GtkCheckMenuItem *) */
-	public static final native boolean gtk_check_menu_item_get_active(long check_menu_item);
-	public static final native long gtk_check_menu_item_new();
-	/**
-	 * @param wid cast=(GtkCheckMenuItem *)
-	 * @param active cast=(gboolean)
-	 */
-	public static final native void gtk_check_menu_item_set_active(long wid, boolean active);
-	/** @param radio_menu_item cast=(GtkRadioMenuItem *) */
-	public static final native long gtk_radio_menu_item_get_group(long radio_menu_item);
-	/** @param group cast=(GSList *) */
-	public static final native long gtk_radio_menu_item_new(long group);
-	public static final native long gtk_separator_menu_item_new();
-
-
 	/* GtkPopover */
 	/** @param popover cast=(GtkPopover *) */
 	public static final native void gtk_popover_popdown(long popover);
@@ -1412,34 +1263,6 @@
 	 */
 	public static final native void gtk_popover_set_pointing_to(long popover, GdkRectangle rect);
 
-	/* GtkPopover [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param popover cast=(GtkPopover *)
-	 */
-	public static final native void gtk_popover_set_has_arrow(long popover, boolean has_arrow);
-
-
-	/* GtkPopoverMenuBar [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param model cast=(GMenuModel *) */
-	public static final native long gtk_popover_menu_bar_new_from_model(long model);
-
-	/* GtkPopoverMenu [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param model cast=(GMenuModel *)
-	 * @param flags cast=(GtkPopoverMenuFlags)
-	 */
-	public static final native long gtk_popover_menu_new_from_model_full(long model, int flags);
-	/**
-	 * @method flags=dynamic
-	 * @param popover cast=(GtkPopoverMenu *)
-	 * @param model cast=(GMenuModel *)
-	 */
-	public static final native void gtk_popover_menu_set_menu_model(long popover, long model);
-
 	/* GtkMenuButton */
 	public static final native long gtk_menu_button_new();
 
@@ -1946,36 +1769,6 @@
 
 
 	public static final native long gtk_settings_get_default();
-	/** @param selection_data cast=(GtkSelectionData *) */
-	public static final native void gtk_selection_data_free(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 */
-	public static final native long gtk_selection_data_get_data(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 */
-	public static final native int gtk_selection_data_get_format(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 */
-	public static final native int gtk_selection_data_get_length(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 */
-	public static final native long gtk_selection_data_get_target(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 */
-	public static final native long gtk_selection_data_get_data_type(long selection_data);
-	/**
-	 * @param selection_data cast=(GtkSelectionData *)
-	 * @param type cast=(GdkAtom)
-	 * @param format cast=(gint)
-	 * @param data cast=(const guchar *)
-	 * @param length cast=(gint)
-	 */
-	public static final native void gtk_selection_data_set(long selection_data, long type, int format, long data, int length);
 	/** @param socket cast=(GtkSocket *) */
 	public static final native long gtk_socket_get_id(long socket);
 	public static final native long gtk_socket_new();
@@ -2236,10 +2029,6 @@
 	/** @param iter cast=(const GtkTextIter *) */
 	public static final native int gtk_text_iter_get_offset(byte[] iter);
 
-	/* GtkText [GTK4 only] */
-	/** @param self cast=(GtkText *) */
-	public static final native long gtk_text_get_buffer(long self);
-
 	/* GtkTextView */
 	public static final native long gtk_text_view_new();
 	/**
@@ -2348,92 +2137,6 @@
 	public static final native void gtk_toggle_button_set_inconsistent(long toggle_button, boolean setting);
 
 
-	/* GtkToolbar & related tool items [GTK3 only] */
-	/**
-	 * @param icon_widget cast=(GtkWidget *)
-	 * @param label cast=(const gchar *)
-	 */
-	public static final native long gtk_tool_button_new(long icon_widget, byte[] label);
-	/**
-	 * @param button cast=(GtkToolButton *)
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_tool_button_set_icon_widget(long button, long widget);
-	/**
-	 * @param button cast=(GtkToolButton *)
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_tool_button_set_label_widget(long button,  long widget);
-	/**
-	 * @param item cast=(GtkToolButton *)
-	 * @param underline cast=(gboolean)
-	 */
-	public static final native void gtk_tool_button_set_use_underline(long item, boolean underline);
-
-	/** @param button cast=(GtkToggleToolButton *) */
-	public static final native boolean gtk_toggle_tool_button_get_active(long button);
-	public static final native long gtk_toggle_tool_button_new();
-	/**
-	 * @param item cast=(GtkToggleToolButton *)
-	 * @param selected cast=(gboolean)
-	 */
-	public static final native void gtk_toggle_tool_button_set_active(long item, boolean selected);
-
-	/**
-	 * @param item cast=(GtkToolItem *)
-	 * @param menu_id cast=(const gchar *)
-	 */
-	public static final native long gtk_tool_item_get_proxy_menu_item(long item, byte[] menu_id);
-	/** @param item cast=(GtkToolItem *) */
-	public static final native long gtk_tool_item_retrieve_proxy_menu_item(long item);
-	/**
-	 * @param item cast=(GtkToolItem *)
-	 * @param important cast=(gboolean)
-	 */
-	public static final native void gtk_tool_item_set_is_important(long item, boolean important);
-	/**
-	 * @param item cast=(GtkToolItem *)
-	 * @param homogeneous cast=(gboolean)
-	 */
-	public static final native void gtk_tool_item_set_homogeneous(long item, boolean homogeneous);
-	/**
-	 * @param item cast=(GtkToolItem *)
-	 * @param menu_id cast=(const gchar *)
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_tool_item_set_proxy_menu_item(long item, byte[] menu_id, long widget);
-	/**
-	 * @param toolbar cast=(GtkToolbar *)
-	 * @param item cast=(GtkToolItem *)
-	 */
-	public static final native void gtk_toolbar_insert(long toolbar, long item, int pos);
-	public static final native long gtk_toolbar_new();
-	/**
-	 * @param toolbar cast=(GtkToolbar *)
-	 * @param show_arrow cast=(gboolean)
-	 */
-	public static final native void gtk_toolbar_set_show_arrow(long toolbar, boolean show_arrow);
-	/**
-	 * @param toolbar cast=(GtkToolbar *)
-	 * @param style cast=(GtkToolbarStyle)
-	 */
-	public static final native void gtk_toolbar_set_style(long toolbar, int style);
-	/** @param toolbar cast=(GtkToolbar *)*/
-	public static final native void gtk_toolbar_set_icon_size(long toolbar, int size);
-	/**
-	 * @param icon_widget cast=(GtkWidget *)
-	 * @param label cast=(const gchar *)
-	 */
-	public static final native long gtk_menu_tool_button_new(long icon_widget, byte[] label);
-	public static final native long gtk_separator_tool_item_new();
-	/**
-	 * @param item cast=(GtkSeparatorToolItem *)
-	 * @param draw cast=(gboolean)
-	 */
-	public static final native void gtk_separator_tool_item_set_draw(long item, boolean draw);
-
-
-
 	public static final native long gtk_tooltip_get_type();
 	/**
 	 * @param tooltip cast=(GtkTooltip *)
@@ -2905,11 +2608,6 @@
 	/* [GTK3 only, if-def'd in os.h] */
 	public static final native void gtk_viewport_set_shadow_type(long viewport, int type);
 
-	/* GtkNative [GTK4 only] */
-	/** @param self cast=(GtkNative *) */
-	public static final native long gtk_native_get_surface(long self);
-
-
 	/**
 	 * @param context cast=(GtkStyleContext *)
 	 * @param cr cast=(cairo_t *)
@@ -3528,107 +3226,11 @@
 	 */
 	public static final native void gtk_window_get_default_size(long window, int[] width, int[] height);
 
-	/* GtkWindow [GTK3 only, if-def'd in os.h] */
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param accel_group cast=(GtkAccelGroup *)
-	 */
-	public static final native void gtk_window_add_accel_group(long window, long accel_group);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param accel_group cast=(GtkAccelGroup *)
-	 */
-	public static final native void gtk_window_remove_accel_group(long window, long accel_group);
+	/* GtkWindow [GTK3] */
 	/**
 	 * @param window cast=(GtkWindow *)
 	 * @param geometry_widget cast=(GtkWidget *)
 	 * @param geometry flags=no_out
 	 */
 	public static final native void gtk_window_set_geometry_hints(long window, long geometry_widget, GdkGeometry geometry, int geom_mask);
-	/** @param handle cast=(GtkWindow *) */
-	public static final native void gtk_window_deiconify(long handle);
-	/** @param handle cast=(GtkWindow *) */
-	public static final native void gtk_window_iconify(long handle);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_window_set_default(long window, long widget);
-	/** @param window cast=(GtkWindow *) */
-	public static final native boolean gtk_window_activate_default(long window);
-	/** @param window cast=(GtkWindow *) */
-	public static final native void gtk_window_set_type_hint(long window, int hint);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param skips_taskbar cast=(gboolean)
-	 */
-	public static final native void gtk_window_set_skip_taskbar_hint(long window, boolean skips_taskbar);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param setting cast=(gboolean)
-	 */
-	public static final native void gtk_window_set_keep_above(long window, boolean setting);
-	/** @param window cast=(GtkWindow *) */
-	public static final native long gtk_window_get_icon_list(long window);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param attach_widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_window_set_attached_to(long window, long attach_widget);
-	/**
-	 * @param handle cast=(GtkWindow *)
-	 * @param x cast=(gint)
-	 * @param y cast=(gint)
-	 */
-	public static final native void gtk_window_move(long handle, int x, int y);
-	/** @param type cast=(GtkWindowType) */
-	public static final native long gtk_window_new(int type);
-	/**
-	 * @param handle cast=(GtkWindow *)
-	 * @param x cast=(gint *)
-	 * @param y cast=(gint *)
-	 */
-	public static final native void gtk_window_get_position(long handle, int[] x, int[] y);
-	/** @param window cast=(GtkWindow *) */
-	public static final native int gtk_window_get_mnemonic_modifier(long window);
-	/**
-	 * @method flags=dynamic
-	 * @param handle cast=(GtkWindow *)
-	 * @param x cast=(gint)
-	 * @param y cast=(gint)
-	 */
-	public static final native void gtk_window_resize(long handle, int x, int y);
-	/**
-	 * @method flags=dynamic
-	 * @param handle cast=(GtkWindow *)
-	 * @param width cast=(gint *)
-	 * @param height cast=(gint *)
-	 */
-	public static final native void gtk_window_get_size(long handle, int[] width, int[] height);
-
-	/* GtkWindow [GTK4 only, if-def'd in os.h] */
-	public static final native long gtk_window_new();
-	/** @param window cast=(GtkWindow *) */
-	public static final native void gtk_window_minimize(long window);
-	/** @param window cast=(GtkWindow *) */
-	public static final native void gtk_window_unminimize(long window);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param default_widget cast=(GtkWidget *)
-	 */
-	public static final native void gtk_window_set_default_widget(long window, long default_widget);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param child cast=(GtkWidget *)
-	 */
-	public static final native void gtk_window_set_child(long window, long child);
-	/** @param window cast=(GtkWindow *) */
-	public static final native void gtk_window_destroy(long window);
-	/** @param window cast=(GtkWindow *) */
-	public static final native long gtk_window_get_icon_name(long window);
-	/**
-	 * @param window cast=(GtkWindow *)
-	 * @param name cast=(const char *)
-	 * */
-	public static final native void gtk_window_set_icon_name(long window, long name);
 }
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 9d697ee..90a68ba 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
@@ -17,6 +17,12 @@
  * This class contains native functions that are present in GTK3 only.
  */
 public class GTK3 {
+
+	/* Macros */
+	public static final native boolean GTK_IS_MENU_ITEM(long obj);
+	/** @method flags=const */
+	public static final native long GTK_TYPE_MENU();
+
 	/**
 	 * @param context cast=(GtkIMContext *)
 	 * @param event cast=(GdkEventKey *)
@@ -188,6 +194,74 @@
 	 * @param list cast=(GList *)
 	 */
 	public static final native void gtk_window_set_icon_list(long window, long list);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param accel_group cast=(GtkAccelGroup *)
+	 */
+	public static final native void gtk_window_add_accel_group(long window, long accel_group);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param accel_group cast=(GtkAccelGroup *)
+	 */
+	public static final native void gtk_window_remove_accel_group(long window, long accel_group);
+	/** @param handle cast=(GtkWindow *) */
+	public static final native void gtk_window_deiconify(long handle);
+	/** @param handle cast=(GtkWindow *) */
+	public static final native void gtk_window_iconify(long handle);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_window_set_default(long window, long widget);
+	/** @param window cast=(GtkWindow *) */
+	public static final native boolean gtk_window_activate_default(long window);
+	/** @param window cast=(GtkWindow *) */
+	public static final native void gtk_window_set_type_hint(long window, int hint);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param skips_taskbar cast=(gboolean)
+	 */
+	public static final native void gtk_window_set_skip_taskbar_hint(long window, boolean skips_taskbar);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param setting cast=(gboolean)
+	 */
+	public static final native void gtk_window_set_keep_above(long window, boolean setting);
+	/** @param window cast=(GtkWindow *) */
+	public static final native long gtk_window_get_icon_list(long window);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param attach_widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_window_set_attached_to(long window, long attach_widget);
+	/**
+	 * @param handle cast=(GtkWindow *)
+	 * @param x cast=(gint)
+	 * @param y cast=(gint)
+	 */
+	public static final native void gtk_window_move(long handle, int x, int y);
+	/** @param type cast=(GtkWindowType) */
+	public static final native long gtk_window_new(int type);
+	/**
+	 * @param handle cast=(GtkWindow *)
+	 * @param x cast=(gint *)
+	 * @param y cast=(gint *)
+	 */
+	public static final native void gtk_window_get_position(long handle, int[] x, int[] y);
+	/** @param window cast=(GtkWindow *) */
+	public static final native int gtk_window_get_mnemonic_modifier(long window);
+	/**
+	 * @param handle cast=(GtkWindow *)
+	 * @param x cast=(gint)
+	 * @param y cast=(gint)
+	 */
+	public static final native void gtk_window_resize(long handle, int x, int y);
+	/**
+	 * @param handle cast=(GtkWindow *)
+	 * @param width cast=(gint *)
+	 * @param height cast=(gint *)
+	 */
+	public static final native void gtk_window_get_size(long handle, int[] width, int[] height);
 
 	/* GtkWidget */
 	/** @param widget cast=(GtkWidget *) */
@@ -374,4 +448,181 @@
 	public static final native long gtk_target_list_new(long targets, int ntargets);
 	/** @param list cast=(GtkTargetList *) */
 	public static final native void gtk_target_list_unref(long list);
+
+	/* GtkSelectionData */
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native void gtk_selection_data_free(long selection_data);
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native long gtk_selection_data_get_data(long selection_data);
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native int gtk_selection_data_get_format(long selection_data);
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native int gtk_selection_data_get_length(long selection_data);
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native long gtk_selection_data_get_target(long selection_data);
+	/** @param selection_data cast=(GtkSelectionData *) */
+	public static final native long gtk_selection_data_get_data_type(long selection_data);
+	/**
+	 * @param selection_data cast=(GtkSelectionData *)
+	 * @param type cast=(GdkAtom)
+	 * @param format cast=(gint)
+	 * @param data cast=(const guchar *)
+	 * @param length cast=(gint)
+	 */
+	public static final native void gtk_selection_data_set(long selection_data, long type, int format, long data, int length);
+
+	/* GtkMenu/GtkMenuItem */
+	public static final native long gtk_menu_bar_new();
+	/** @param menu_item cast=(GtkMenuItem *) */
+	public static final native long gtk_menu_item_get_submenu(long menu_item);
+	public static final native long gtk_menu_item_new();
+	/**
+	 * @param menu_item cast=(GtkMenuItem *)
+	 * @param submenu cast=(GtkWidget *)
+	 */
+	public static final native void gtk_menu_item_set_submenu(long menu_item, long submenu);
+	public static final native long gtk_menu_new();
+	/** @param menu cast=(GtkMenu *) */
+	public static final native void gtk_menu_popdown(long menu);
+	/** @param menu_shell cast=(GtkMenuShell *) */
+	public static final native void gtk_menu_shell_deactivate(long menu_shell);
+	/**
+	 * @param menu_shell cast=(GtkMenuShell *)
+	 * @param child cast=(GtkWidget *)
+	 * @param position cast=(gint)
+	 */
+	public static final native void gtk_menu_shell_insert(long menu_shell, long child, int position);
+	/**
+	 * @param menu_shell cast=(GtkMenuShell *)
+	 * @param take_focus cast=(gboolean)
+	 */
+	public static final native void gtk_menu_shell_set_take_focus(long menu_shell, boolean take_focus);
+	/** @param check_menu_item cast=(GtkCheckMenuItem *) */
+	public static final native boolean gtk_check_menu_item_get_active(long check_menu_item);
+	public static final native long gtk_check_menu_item_new();
+	/**
+	 * @param wid cast=(GtkCheckMenuItem *)
+	 * @param active cast=(gboolean)
+	 */
+	public static final native void gtk_check_menu_item_set_active(long wid, boolean active);
+	/** @param radio_menu_item cast=(GtkRadioMenuItem *) */
+	public static final native long gtk_radio_menu_item_get_group(long radio_menu_item);
+	/** @param group cast=(GSList *) */
+	public static final native long gtk_radio_menu_item_new(long group);
+	public static final native long gtk_separator_menu_item_new();
+
+	/* GtkToolbar */
+	public static final native long gtk_toolbar_new();
+	/**
+	 * @param toolbar cast=(GtkToolbar *)
+	 * @param item cast=(GtkToolItem *)
+	 */
+	public static final native void gtk_toolbar_insert(long toolbar, long item, int pos);
+	/**
+	 * @param toolbar cast=(GtkToolbar *)
+	 * @param show_arrow cast=(gboolean)
+	 */
+	public static final native void gtk_toolbar_set_show_arrow(long toolbar, boolean show_arrow);
+	/**
+	 * @param toolbar cast=(GtkToolbar *)
+	 * @param style cast=(GtkToolbarStyle)
+	 */
+	public static final native void gtk_toolbar_set_style(long toolbar, int style);
+	/** @param toolbar cast=(GtkToolbar *)*/
+	public static final native void gtk_toolbar_set_icon_size(long toolbar, int size);
+
+	/* GtkToolItem */
+	/**
+	 * @param item cast=(GtkToolItem *)
+	 * @param menu_id cast=(const gchar *)
+	 */
+	public static final native long gtk_tool_item_get_proxy_menu_item(long item, byte[] menu_id);
+	/** @param item cast=(GtkToolItem *) */
+	public static final native long gtk_tool_item_retrieve_proxy_menu_item(long item);
+	/**
+	 * @param item cast=(GtkToolItem *)
+	 * @param important cast=(gboolean)
+	 */
+	public static final native void gtk_tool_item_set_is_important(long item, boolean important);
+	/**
+	 * @param item cast=(GtkToolItem *)
+	 * @param homogeneous cast=(gboolean)
+	 */
+	public static final native void gtk_tool_item_set_homogeneous(long item, boolean homogeneous);
+	/**
+	 * @param item cast=(GtkToolItem *)
+	 * @param menu_id cast=(const gchar *)
+	 * @param widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_tool_item_set_proxy_menu_item(long item, byte[] menu_id, long widget);
+
+	/* GtkSeparatorToolItem */
+	public static final native long gtk_separator_tool_item_new();
+	/**
+	 * @param item cast=(GtkSeparatorToolItem *)
+	 * @param draw cast=(gboolean)
+	 */
+	public static final native void gtk_separator_tool_item_set_draw(long item, boolean draw);
+
+	/* GtkToolButton */
+	/**
+	 * @param icon_widget cast=(GtkWidget *)
+	 * @param label cast=(const gchar *)
+	 */
+	public static final native long gtk_tool_button_new(long icon_widget, byte[] label);
+	/**
+	 * @param button cast=(GtkToolButton *)
+	 * @param widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_tool_button_set_icon_widget(long button, long widget);
+	/**
+	 * @param button cast=(GtkToolButton *)
+	 * @param widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_tool_button_set_label_widget(long button,  long widget);
+	/**
+	 * @param item cast=(GtkToolButton *)
+	 * @param underline cast=(gboolean)
+	 */
+	public static final native void gtk_tool_button_set_use_underline(long item, boolean underline);
+
+	/* GtkToggleToolButton */
+	/** @param button cast=(GtkToggleToolButton *) */
+	public static final native boolean gtk_toggle_tool_button_get_active(long button);
+	public static final native long gtk_toggle_tool_button_new();
+	/**
+	 * @param item cast=(GtkToggleToolButton *)
+	 * @param selected cast=(gboolean)
+	 */
+	public static final native void gtk_toggle_tool_button_set_active(long item, boolean selected);
+
+	/* GtkMenuToolButton */
+	/**
+	 * @param icon_widget cast=(GtkWidget *)
+	 * @param label cast=(const gchar *)
+	 */
+	public static final native long gtk_menu_tool_button_new(long icon_widget, byte[] label);
+
+	/* GtkIconTheme */
+	/**
+	 * @param icon_theme cast=(GtkIconTheme *)
+	 * @param icon cast=(GIcon *)
+	 * @param size cast=(gint)
+	 * @param flags cast=(GtkIconLookupFlags)
+	 */
+	public static final native long gtk_icon_theme_lookup_by_gicon(long icon_theme, long icon, int size, int flags);
+	/**
+	 * @param icon_theme cast=(GtkIconTheme *)
+	 * @param icon_name cast=(const gchar *)
+	 * @param size cast=(gint)
+	 * @param flags cast=(GtkIconLookupFlags)
+	 * @param error cast=(GError **)
+	 */
+	public static final native long gtk_icon_theme_load_icon(long icon_theme, byte[] icon_name, int size, int flags, long error);
+	public static final native long gtk_icon_theme_get_default();
+	/**
+	 * @param icon_info cast=(GtkIconInfo *)
+	 * @param error cast=(GError **)
+	 */
+	public static final native long gtk_icon_info_load_icon(long icon_info, long error[]);
 }
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 17a8bb0..5b58bc4 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
@@ -193,4 +193,112 @@
 	 * @param child cast=(GtkWidget *)
 	 */
 	public static final native void gtk_scrolled_window_set_child(long scrolled_window, long child);
+
+	/* GtkWindow */
+	public static final native long gtk_window_new();
+	/** @param window cast=(GtkWindow *) */
+	public static final native void gtk_window_minimize(long window);
+	/** @param window cast=(GtkWindow *) */
+	public static final native void gtk_window_unminimize(long window);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param default_widget cast=(GtkWidget *)
+	 */
+	public static final native void gtk_window_set_default_widget(long window, long default_widget);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param child cast=(GtkWidget *)
+	 */
+	public static final native void gtk_window_set_child(long window, long child);
+	/** @param window cast=(GtkWindow *) */
+	public static final native void gtk_window_destroy(long window);
+	/** @param window cast=(GtkWindow *) */
+	public static final native long gtk_window_get_icon_name(long window);
+	/**
+	 * @param window cast=(GtkWindow *)
+	 * @param name cast=(const char *)
+	 * */
+	public static final native void gtk_window_set_icon_name(long window, long name);
+
+	/* GtkShortcutController */
+	public static final native long gtk_shortcut_controller_new();
+	/**
+	 * @param controller cast=(GtkShortcutController *)
+	 * @param scope cast=(GtkShortcutScope)
+	 */
+	public static final native void gtk_shortcut_controller_set_scope(long controller, int scope);
+	/**
+	 * @param controller cast=(GtkShortcutController *)
+	 * @param shortcut cast=(GtkShortcut *)
+	 */
+	public static final native void gtk_shortcut_controller_add_shortcut(long controller, long shortcut);
+	/**
+	 * @param controller cast=(GtkShortcutController *)
+	 * @param shortcut cast=(GtkShortcut *)
+	 */
+	public static final native void gtk_shortcut_controller_remove_shortcut(long controller, long shortcut);
+
+	/* GtkShortcut */
+	/**
+	 * @param trigger cast=(GtkShortcutTrigger *)
+	 * @param action cast=(GtkShortcutAction *)
+	 */
+	public static final native long gtk_shortcut_new(long trigger, long action);
+
+	/* GtkShortcutTrigger */
+	/**
+	 * @param keyval cast=(guint)
+	 * @param modifiers cast=(GdkModifierType)
+	 */
+	public static final native long gtk_keyval_trigger_new(int keyval, int modifiers);
+
+	/* GtkShortcutAction */
+	/** @param name cast=(const char *) */
+	public static final native long gtk_named_action_new(byte[] name);
+
+	/* GtkIconPaintable */
+	/** @param paintable cast=(GtkIconPaintable *) */
+	public static final native long gtk_icon_paintable_get_file(long paintable);
+
+	/* GtkText */
+	/** @param self cast=(GtkText *) */
+	public static final native long gtk_text_get_buffer(long self);
+
+	/* GtkPopoverMenu */
+	/**
+	 * @param model cast=(GMenuModel *)
+	 * @param flags cast=(GtkPopoverMenuFlags)
+	 */
+	public static final native long gtk_popover_menu_new_from_model_full(long model, int flags);
+	/**
+	 * @param popover cast=(GtkPopoverMenu *)
+	 * @param model cast=(GMenuModel *)
+	 */
+	public static final native void gtk_popover_menu_set_menu_model(long popover, long model);
+
+	/* GtkPopover */
+	/** @param popover cast=(GtkPopover *) */
+	public static final native void gtk_popover_set_has_arrow(long popover, boolean has_arrow);
+
+	/* GtkPopoverMenuBar */
+	/** @param model cast=(GMenuModel *) */
+	public static final native long gtk_popover_menu_bar_new_from_model(long model);
+
+	/* GtkIconTheme */
+	/** @param display cast=(GdkDisplay *) */
+	public static final native long gtk_icon_theme_get_for_display(long display);
+	/**
+	 * @param self cast=(GtkIconTheme *)
+	 * @param icon_name cast=(const char *)
+	 * @param fallbacks cast=(const char **)
+	 * @param size cast=(gint)
+	 * @param scale cast=(gint)
+	 * @param direction cast=(GtkTextDirection)
+	 * @param flags cast=(GtkIconLookupFlags)
+	 */
+	public static final native long gtk_icon_theme_lookup_icon(long self, byte[] icon_name, long fallbacks, int size, int scale, int direction, int flags);
+
+	/* GtkNative */
+	/** @param self cast=(GtkNative *) */
+	public static final native long gtk_native_get_surface(long self);
 }
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 498bb97..ac51b04 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
@@ -18,6 +18,7 @@
 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.*;
 
 /**
@@ -489,7 +490,7 @@
 	}
 	display.setData (REMOVE_IDLE_PROC_KEY, null);
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(handle);
+		GTK4.gtk_window_destroy(handle);
 	} else {
 		GTK.gtk_widget_destroy(handle);
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java b/bundles/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java
index d680b2b..1bcba88 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Program/gtk/org/eclipse/swt/program/Program.java
@@ -23,6 +23,8 @@
 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.*;
 import org.eclipse.swt.widgets.*;
 
 /**
@@ -151,17 +153,17 @@
 	ImageData data = null;
 	long icon_theme;
 	if (GTK.GTK4) {
-		icon_theme = GTK.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
+		icon_theme = GTK4.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
 	} else {
-		icon_theme = GTK.gtk_icon_theme_get_default();
+		icon_theme = GTK3.gtk_icon_theme_get_default();
 	}
 
 	byte[] icon = Converter.wcsToMbcs (iconPath, true);
 	long gicon = OS.g_icon_new_for_string(icon, null);
 	if (gicon != 0) {
-		long gicon_info = GTK.gtk_icon_theme_lookup_by_gicon (icon_theme, gicon, 16/*size*/, 0);
+		long gicon_info = GTK3.gtk_icon_theme_lookup_by_gicon (icon_theme, gicon, 16/*size*/, 0);
 		if (gicon_info != 0) {
-			long pixbuf = GTK.gtk_icon_info_load_icon(gicon_info, null);
+			long pixbuf = GTK3.gtk_icon_info_load_icon(gicon_info, null);
 			if (pixbuf != 0) {
 				int stride = GDK.gdk_pixbuf_get_rowstride(pixbuf);
 				long pixels = GDK.gdk_pixbuf_get_pixels(pixbuf);
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 d0281ec..de09937 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
@@ -22,6 +22,8 @@
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.cairo.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * This class is the abstract superclass of all device objects,
@@ -677,9 +679,9 @@
 	OS.pango_tab_array_set_tab(emptyTab, 0, OS.PANGO_TAB_LEFT, 1);
 
 	if (GTK.GTK4) {
-		shellHandle = GTK.gtk_window_new();
+		shellHandle = GTK4.gtk_window_new();
 	} else {
-		shellHandle = GTK.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
+		shellHandle = GTK3.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
 	}
 	if (shellHandle == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 	GTK.gtk_widget_realize(shellHandle);
@@ -975,7 +977,7 @@
 protected void release () {
 	if (shellHandle != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_window_destroy(shellHandle);
+			GTK4.gtk_window_destroy(shellHandle);
 		} else {
 			GTK.gtk_widget_destroy(shellHandle);
 		}
@@ -1105,7 +1107,7 @@
 		long monitor;
 
 		if (GTK.GTK4) {
-			long surface = GTK.gtk_native_get_surface(GTK.gtk_widget_get_native(shellHandle));
+			long surface = GTK4.gtk_native_get_surface(GTK.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/ColorDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ColorDialog.java
index 42de47f..8fd1d72 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
@@ -19,6 +19,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 allow the user to select a color
@@ -212,7 +213,7 @@
 
 	display.removeIdleProc();
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(handle);
+		GTK4.gtk_window_destroy(handle);
 	} else {
 		GTK.gtk_widget_destroy(handle);
 	}
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 ec656a5..c5dfb0ae 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
@@ -958,7 +958,7 @@
 					OS.g_signal_connect_closure_by_id (eventHandle, display.signalIds [EVENT_AFTER], 0, display.getClosure (EVENT_AFTER), false);
 				}
 
-				if (OS.G_OBJECT_TYPE (eventHandle) == GTK.GTK_TYPE_MENU ()) {
+				if (OS.G_OBJECT_TYPE (eventHandle) == GTK3.GTK_TYPE_MENU ()) {
 					OS.g_signal_connect_closure(eventHandle, OS.selection_done, display.getClosure (SELECTION_DONE), true);
 				}
 			}
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 d57975b..5ef3025 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
@@ -3758,7 +3758,7 @@
 				display.ignoreFocus = false;
 				long grabHandle = GTK3.gtk_grab_get_current ();
 				if (grabHandle != 0) {
-					if (OS.G_OBJECT_TYPE (grabHandle) == GTK.GTK_TYPE_MENU ()) {
+					if (OS.G_OBJECT_TYPE (grabHandle) == GTK3.GTK_TYPE_MENU ()) {
 						display.ignoreFocus = true;
 						break;
 					}
@@ -6475,7 +6475,7 @@
 		if (GTK.GTK4) {
 			if (state[0] != GDK.GDK_MOD1_MASK) return false;
 		} else {
-			if ((state[0] & mask) != GTK.gtk_window_get_mnemonic_modifier (shell.shellHandle)) return false;
+			if ((state[0] & mask) != GTK3.gtk_window_get_mnemonic_modifier (shell.shellHandle)) return false;
 		}
 	}
 	Decorations shell = menuShell ();
@@ -6724,7 +6724,7 @@
 				if (control == null) control = this;
 				long gdkResource;
 				if (GTK.GTK4) {
-					gdkResource = GTK.gtk_native_get_surface(GTK.gtk_widget_get_native (handle));
+					gdkResource = GTK4.gtk_native_get_surface(GTK.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);
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 0abc7d2..8c0be8d 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
@@ -964,7 +964,7 @@
 		}
 
 		if (!GTK.GTK4) {
-			if (OS.G_OBJECT_TYPE (textEntryHandle) == GTK.GTK_TYPE_MENU ()) {
+			if (OS.G_OBJECT_TYPE (textEntryHandle) == GTK3.GTK_TYPE_MENU ()) {
 				hookEventsForMenu ();
 			}
 		}
@@ -1943,7 +1943,7 @@
 		byte [] dateTimeConverted = Converter.wcsToMbcs (dateTimeText, true);
 
 		if (GTK.GTK4) {
-			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK.gtk_text_get_buffer(textEntryHandle);
+			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 			GTK.gtk_entry_buffer_set_text(bufferHandle, dateTimeConverted, dateTimeText.length());
 		} else {
 			//note, this is ignored if the control is in a fill-layout.
@@ -2055,7 +2055,7 @@
 		long stringPtr;
 
 		if (GTK.GTK4) {
-			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK.gtk_text_get_buffer(textEntryHandle);
+			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 			stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
 			stringPtr = GTK.gtk_entry_get_text(textEntryHandle);
@@ -2104,7 +2104,7 @@
 
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK.gtk_text_get_buffer(textEntryHandle);
+		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
 		stringPtr = GTK.gtk_entry_get_text (textEntryHandle);
@@ -2122,7 +2122,7 @@
 
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK.gtk_text_get_buffer(textEntryHandle);
+		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
 		stringPtr = GTK.gtk_entry_get_text(textEntryHandle);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
index 0581dd8..24d7070 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
@@ -202,7 +202,7 @@
 		 * Set texture list to window's surface. Can no longer
 		 * use GtkWindow functions as they require a themed icon.
 		 */
-		long surface = GTK.gtk_native_get_surface(topHandle());
+		long surface = GTK4.gtk_native_get_surface(topHandle());
 		GTK4.gdk_toplevel_set_icon_list(surface, icon_list);
 	} else {
 		GTK3.gtk_window_set_icon_list(topHandle(), icon_list);
@@ -262,7 +262,7 @@
 	if (accelGroup == 0) error (SWT.ERROR_NO_HANDLES);
 	//FIXME - what should we do for Decorations
 	long shellHandle = topHandle ();
-	GTK.gtk_window_add_accel_group (shellHandle, accelGroup);
+	GTK3.gtk_window_add_accel_group (shellHandle, accelGroup);
 }
 
 @Override
@@ -274,7 +274,7 @@
 void destroyAccelGroup () {
 	if (accelGroup == 0) return;
 	long shellHandle = topHandle ();
-	GTK.gtk_window_remove_accel_group (shellHandle, accelGroup);
+	GTK3.gtk_window_remove_accel_group (shellHandle, accelGroup);
 	//TEMPORARY CODE
 //	OS.g_object_unref (accelGroup);
 	accelGroup = 0;
@@ -595,9 +595,9 @@
 	}
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_set_default_widget (topHandle(), buttonHandle);
+		GTK4.gtk_window_set_default_widget (topHandle(), buttonHandle);
 	} else {
-		GTK.gtk_window_set_default (topHandle (), buttonHandle);
+		GTK3.gtk_window_set_default (topHandle (), buttonHandle);
 	}
 }
 
@@ -826,7 +826,7 @@
 		long defaultWidget = GTK.gtk_window_get_default_widget(shellHandle);
 		return GTK.gtk_widget_activate(defaultWidget);
 	} else {
-		return GTK.gtk_window_activate_default (shellHandle);
+		return GTK3.gtk_window_activate_default (shellHandle);
 	}
 }
 
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 6c4f2e3..0a9e72b 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
@@ -1248,9 +1248,9 @@
 
 	/* Initialize the hidden shell */
 	if (GTK.GTK4) {
-		shellHandle = GTK.gtk_window_new();
+		shellHandle = GTK4.gtk_window_new();
 	} else {
-		shellHandle = GTK.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
+		shellHandle = GTK3.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
 	}
 	if (shellHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	GTK.gtk_widget_realize (shellHandle);
@@ -1370,9 +1370,9 @@
 
 	long pixbuf;
 	if (GTK.GTK4) {
-		long iconTheme = GTK.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
-		long paintable = GTK.gtk_icon_theme_lookup_icon(iconTheme, buffer, 0, 48, 1, GTK.GTK_TEXT_DIR_LTR, GTK.GTK_ICON_LOOKUP_FORCE_REGULAR);
-		long file = GTK.gtk_icon_paintable_get_file(paintable);
+		long iconTheme = GTK4.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
+		long paintable = GTK4.gtk_icon_theme_lookup_icon(iconTheme, buffer, 0, 48, 1, GTK.GTK_TEXT_DIR_LTR, GTK.GTK_ICON_LOOKUP_FORCE_REGULAR);
+		long file = GTK4.gtk_icon_paintable_get_file(paintable);
 		long texture = GDK.gdk_texture_new_from_file(file, 0);
 		pixbuf = GDK.gdk_pixbuf_get_from_texture(texture);
 
@@ -1380,8 +1380,8 @@
 		OS.g_object_unref(file);
 		OS.g_object_unref(paintable);
 	} else {
-		long iconTheme = GTK.gtk_icon_theme_get_default();
-		pixbuf = GTK.gtk_icon_theme_load_icon(iconTheme, buffer, 48, GTK.GTK_ICON_LOOKUP_FORCE_SIZE, 0);
+		long iconTheme = GTK3.gtk_icon_theme_get_default();
+		pixbuf = GTK3.gtk_icon_theme_load_icon(iconTheme, buffer, 48, GTK.GTK_ICON_LOOKUP_FORCE_SIZE, 0);
 	}
 
 	if (pixbuf == 0) return null;
@@ -1992,7 +1992,7 @@
 			Shell tempShell = activeShell;
 			int [] offsetX = new int [1], offsetY = new int [1];
 			while (tempShell.getParent() != null) {
-				GTK.gtk_window_get_position(tempShell.shellHandle, offsetX, offsetY);
+				GTK3.gtk_window_get_position(tempShell.shellHandle, offsetX, offsetY);
 				x[0]+= offsetX[0];
 				y[0]+= offsetY[0];
 				tempShell = tempShell.getParent().getShell();
@@ -3299,13 +3299,13 @@
 	// The 'Clearlooks-Phenix' theme sets 'color:' for 'window {' css node, so a stand-alone label is not enough
 	long window;
 	if (GTK.GTK4) {
-		window = GTK.gtk_window_new();
+		window = GTK4.gtk_window_new();
 	} else {
-		window = GTK.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
+		window = GTK3.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
 	}
 	long label = GTK.gtk_label_new(null);
 	if (GTK.GTK4) {
-		GTK.gtk_window_set_child(window, label);
+		GTK4.gtk_window_set_child(window, label);
 	} else {
 		GTK3.gtk_container_add(window, label);
 	}
@@ -3314,7 +3314,7 @@
 	COLOR_LINK_FOREGROUND_RGBA = styleContextGetColor (styleContextLink, GTK.GTK_STATE_FLAG_LINK);
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(window);
+		GTK4.gtk_window_destroy(window);
 	} else {
 		GTK.gtk_widget_destroy(window);
 	}
@@ -3359,13 +3359,13 @@
 	 */
 	long window;
 	if (GTK.GTK4) {
-		window = GTK.gtk_window_new();
+		window = GTK4.gtk_window_new();
 	} else {
-		window = GTK.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
+		window = GTK3.gtk_window_new (GTK.GTK_WINDOW_TOPLEVEL);
 	}
 	long entry = GTK.gtk_entry_new ();
 	if (GTK.GTK4) {
-		GTK.gtk_window_set_child(window, entry);
+		GTK4.gtk_window_set_child(window, entry);
 	} else {
 		GTK3.gtk_container_add(window, entry);
 	}
@@ -3376,7 +3376,7 @@
 	COLOR_TEXT_DISABLED_BACKGROUND_RGBA = styleContextEstimateBackgroundColor (context, GTK.GTK_STATE_FLAG_INSENSITIVE);
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(window);
+		GTK4.gtk_window_destroy(window);
 	} else {
 		GTK.gtk_widget_destroy(window);
 	}
@@ -3543,7 +3543,7 @@
 	 * SWT_MENU_LOCATION_DEBUGGING environment variable.
 	 */
 	if (GTK.GTK_VERSION >= OS.VERSION(3, 22, 0) && OS.SWT_MENU_LOCATION_DEBUGGING) {
-		long menuType = GTK.GTK_TYPE_MENU ();
+		long menuType = GTK3.GTK_TYPE_MENU ();
 		OS.g_type_class_ref (menuType);
 		signalIds [Widget.POPPED_UP] = OS.g_signal_lookup (OS.popped_up, menuType);
 	} else {
@@ -4731,7 +4731,7 @@
 	/* Dispose preedit window */
 	if (preeditWindow != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_window_destroy(preeditWindow);
+			GTK4.gtk_window_destroy(preeditWindow);
 		} else {
 			GTK.gtk_widget_destroy(preeditWindow);
 		}
@@ -4845,7 +4845,7 @@
 	/* Dispose the hidden shell */
 	if (shellHandle != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_window_destroy(shellHandle);
+			GTK4.gtk_window_destroy(shellHandle);
 		} else {
 			GTK.gtk_widget_destroy(shellHandle);
 		}
@@ -5456,8 +5456,8 @@
 
 long setDirectionProc (long widget, long direction) {
 	GTK.gtk_widget_set_direction (widget, (int)direction);
-	if (!GTK.GTK4 && GTK.GTK_IS_MENU_ITEM (widget)) {
-		long submenu = GTK.gtk_menu_item_get_submenu (widget);
+	if (!GTK.GTK4 && GTK3.GTK_IS_MENU_ITEM (widget)) {
+		long submenu = GTK3.gtk_menu_item_get_submenu (widget);
 		if (submenu != 0) {
 			GTK.gtk_widget_set_direction (submenu, (int)direction);
 			GTK3.gtk_container_forall (submenu, setDirectionProc, direction);
@@ -5583,13 +5583,13 @@
 void showIMWindow (Control control) {
 	imControl = control;
 	if (preeditWindow == 0) {
-		preeditWindow = GTK.gtk_window_new (GTK.GTK_WINDOW_POPUP);
+		preeditWindow = GTK3.gtk_window_new (GTK.GTK_WINDOW_POPUP);
 		if (preeditWindow == 0) error (SWT.ERROR_NO_HANDLES);
 		preeditLabel = GTK.gtk_label_new (null);
 		if (preeditLabel == 0) error (SWT.ERROR_NO_HANDLES);
 
 		if (GTK.GTK4) {
-			GTK.gtk_window_set_child(preeditWindow, preeditLabel);
+			GTK4.gtk_window_set_child(preeditWindow, preeditLabel);
 		} else {
 			GTK3.gtk_container_add (preeditWindow, preeditLabel);
 			GTK.gtk_widget_show (preeditLabel);
@@ -5610,10 +5610,10 @@
 		if (pangoAttrs [0] != 0) GTK.gtk_label_set_attributes (preeditLabel, pangoAttrs[0]);
 		GTK.gtk_label_set_text (preeditLabel, preeditString [0]);
 		Point point = control.toDisplayInPixels (control.getIMCaretPos ());
-		GTK.gtk_window_move (preeditWindow, point.x, point.y);
+		GTK3.gtk_window_move (preeditWindow, point.x, point.y);
 		GtkRequisition requisition = new GtkRequisition ();
 		GTK.gtk_widget_get_preferred_size (preeditLabel, requisition, null);
-		GTK.gtk_window_resize (preeditWindow, requisition.width, requisition.height);
+		GTK3.gtk_window_resize (preeditWindow, requisition.width, requisition.height);
 		GTK.gtk_widget_show (preeditWindow);
 	} else {
 		GTK.gtk_widget_hide (preeditWindow);
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 a5ea219..bc3ae94 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
@@ -19,6 +19,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 allow the user to select a font
@@ -229,7 +230,7 @@
 	display.removeIdleProc ();
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(handle);
+		GTK4.gtk_window_destroy(handle);
 	} else {
 		GTK.gtk_widget_destroy(handle);
 	}
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 1121ab5..ce3159a 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
@@ -261,7 +261,7 @@
 					 * testing will be done to see if this type of fix is required.
 					 */
 				} else {
-					GTK.gtk_menu_shell_set_take_focus (handle, false);
+					GTK3.gtk_menu_shell_set_take_focus (handle, false);
 				}
 			}
 			if (GTK.GTK_VERSION < OS.VERSION(3, 22, 0)) {
@@ -376,7 +376,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_popover_popdown(handle);
 		} else {
-			GTK.gtk_menu_popdown (handle);
+			GTK3.gtk_menu_popdown (handle);
 		}
 	}
 }
@@ -455,7 +455,7 @@
 
 		switch (style & bits) {
 			case SWT.BAR:
-				handle = GTK.gtk_popover_menu_bar_new_from_model(modelHandle);
+				handle = GTK4.gtk_popover_menu_bar_new_from_model(modelHandle);
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 
 				GTK4.gtk_box_prepend(parent.vboxHandle, handle);
@@ -465,10 +465,10 @@
 				break;
 			case SWT.POP_UP:
 			default:
-				handle = GTK.gtk_popover_menu_new_from_model_full(modelHandle, GTK.GTK_POPOVER_MENU_NESTED);
+				handle = GTK4.gtk_popover_menu_new_from_model_full(modelHandle, GTK.GTK_POPOVER_MENU_NESTED);
 				GTK.gtk_widget_set_parent(handle, parent.handle);
 				GTK.gtk_popover_set_position(handle, GTK.GTK_POS_BOTTOM);
-				GTK.gtk_popover_set_has_arrow(handle, false);
+				GTK4.gtk_popover_set_has_arrow(handle, false);
 				GTK.gtk_widget_set_halign(handle, GTK.GTK_ALIGN_START);
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 		}
@@ -489,14 +489,14 @@
 		}
 	} else {
 		if ((style & SWT.BAR) != 0) {
-			handle = GTK.gtk_menu_bar_new();
+			handle = GTK3.gtk_menu_bar_new();
 			if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 
 			long vboxHandle = parent.vboxHandle;
 			GTK3.gtk_container_add(vboxHandle, handle);
 			gtk_box_set_child_packing(vboxHandle, handle, false, true, 0, GTK.GTK_PACK_START);
 		} else {
-			handle = GTK.gtk_menu_new();
+			handle = GTK3.gtk_menu_new();
 		}
 	}
 }
@@ -855,7 +855,7 @@
 long gtk_show_help (long widget, long helpType) {
 	if (sendHelpEvent (helpType)) {
 		// TODO: GTK4 there is no idea of a menu shell
-		GTK.gtk_menu_shell_deactivate (handle);
+		GTK3.gtk_menu_shell_deactivate (handle);
 		return 1;
 	}
 	return 0;
@@ -892,9 +892,9 @@
 	super.hookEvents();
 
 	if (GTK.GTK4) {
-		shortcutController = GTK.gtk_shortcut_controller_new();
+		shortcutController = GTK4.gtk_shortcut_controller_new();
 		if (shortcutController == 0) error(SWT.ERROR_NO_HANDLES);
-		GTK.gtk_shortcut_controller_set_scope(shortcutController, GTK.GTK_SHORTCUT_SCOPE_GLOBAL);
+		GTK4.gtk_shortcut_controller_set_scope(shortcutController, GTK.GTK_SHORTCUT_SCOPE_GLOBAL);
 		GTK.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);
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 8cbb83c..aca5e9f 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
@@ -318,7 +318,7 @@
 	} else {
 		switch (style & bits) {
 			case SWT.SEPARATOR:
-				handle = GTK.gtk_separator_menu_item_new ();
+				handle = GTK3.gtk_separator_menu_item_new ();
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 				break;
 			case SWT.RADIO:
@@ -333,11 +333,11 @@
 				* to the same group.  This allows the visible button to be
 				* unselected.
 				*/
-				groupHandle = GTK.gtk_radio_menu_item_new (0);
+				groupHandle = GTK3.gtk_radio_menu_item_new (0);
 				if (groupHandle == 0) error (SWT.ERROR_NO_HANDLES);
 				OS.g_object_ref_sink (groupHandle);
-				long group = GTK.gtk_radio_menu_item_get_group (groupHandle);
-				handle = GTK.gtk_radio_menu_item_new (group);
+				long group = GTK3.gtk_radio_menu_item_get_group (groupHandle);
+				handle = GTK3.gtk_radio_menu_item_new (group);
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 
 				labelHandle = GTK3.gtk_accel_label_new (buffer);
@@ -352,7 +352,7 @@
 				}
 				break;
 			case SWT.CHECK:
-				handle = GTK.gtk_check_menu_item_new ();
+				handle = GTK3.gtk_check_menu_item_new ();
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 
 				labelHandle = GTK3.gtk_accel_label_new (buffer);
@@ -370,7 +370,7 @@
 			// menus are used, the "head" menu item (such as File, Edit, Help, etc.) should
 			// not be padded. We only care about this in Gtk3.
 			case SWT.CASCADE:
-				handle = GTK.gtk_menu_item_new ();
+				handle = GTK3.gtk_menu_item_new ();
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 
 				labelHandle = GTK3.gtk_accel_label_new (buffer);
@@ -388,7 +388,7 @@
 				break;
 			case SWT.PUSH:
 			default:
-				handle = GTK.gtk_menu_item_new ();
+				handle = GTK3.gtk_menu_item_new ();
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 
 				labelHandle = GTK3.gtk_accel_label_new (buffer);
@@ -437,7 +437,7 @@
 		long parentHandle = parent.handle;
 		boolean enabled = GTK.gtk_widget_get_sensitive (parentHandle);
 		if (!enabled) GTK.gtk_widget_set_sensitive (parentHandle, true);
-		GTK.gtk_menu_shell_insert (parentHandle, handle, index);
+		GTK3.gtk_menu_shell_insert (parentHandle, handle, index);
 		if (!enabled) GTK.gtk_widget_set_sensitive (parentHandle, false);
 		GTK.gtk_widget_show (handle);
 	}
@@ -596,7 +596,7 @@
 		String stateString = Converter.cCharPtrToJavaString(OS.g_variant_get_string(gVariantState, null), false);
 		return stateString.equals("toggled");
 	} else {
-		return GTK.gtk_check_menu_item_get_active(handle);
+		return GTK3.gtk_check_menu_item_get_active(handle);
 	}
 }
 
@@ -659,7 +659,7 @@
 	}
 	if (handled) {
 		// TODO: GTK4 there is no idea of a menu shell
-		GTK.gtk_menu_shell_deactivate (parent.handle);
+		GTK3.gtk_menu_shell_deactivate (parent.handle);
 		return 1;
 	}
 	return 0;
@@ -849,7 +849,7 @@
 
 	if (GTK.GTK4) {
 		if (shortcutHandle != 0) {
-			GTK.gtk_shortcut_controller_remove_shortcut(parent.shortcutController, shortcutHandle);
+			GTK4.gtk_shortcut_controller_remove_shortcut(parent.shortcutController, shortcutHandle);
 		}
 
 		this.accelerator = accelerator;
@@ -883,12 +883,12 @@
 	}
 
 	if (keyval != 0) {
-		shortcutHandle = GTK.gtk_shortcut_new(
-				GTK.gtk_keyval_trigger_new(keyval, mask),
-				GTK.gtk_named_action_new(Converter.javaStringToCString(actionName))
+		shortcutHandle = GTK4.gtk_shortcut_new(
+				GTK4.gtk_keyval_trigger_new(keyval, mask),
+				GTK4.gtk_named_action_new(Converter.javaStringToCString(actionName))
 			);
 		if (shortcutHandle == 0) error(SWT.ERROR_NO_HANDLES);
-		GTK.gtk_shortcut_controller_add_shortcut(parent.shortcutController, shortcutHandle);
+		GTK4.gtk_shortcut_controller_add_shortcut(parent.shortcutController, shortcutHandle);
 	}
 }
 
@@ -979,7 +979,7 @@
 			surface = imageList.getSurface (imageIndex);
 		}
 
-		if (!GTK.GTK_IS_MENU_ITEM (handle)) return;
+		if (!GTK3.GTK_IS_MENU_ITEM (handle)) return;
 		if (OS.SWT_PADDED_MENU_ITEMS && imageHandle != 0) {
 			GTK.gtk_image_set_from_surface(imageHandle, surface);
 		} else {
@@ -1078,11 +1078,11 @@
 			* to replace or GTK will destroy it.
 			*/
 			OS.g_object_ref (oldMenu.handle);
-			GTK.gtk_menu_item_set_submenu (handle, 0);
+			GTK3.gtk_menu_item_set_submenu (handle, 0);
 		}
 		if ((this.menu = menu) != null) {
 			menu.cascade = this;
-			GTK.gtk_menu_item_set_submenu (handle, menu.handle);
+			GTK3.gtk_menu_item_set_submenu (handle, menu.handle);
 		}
 		if (accelGroup != 0) addAccelerators (accelGroup);
 	}
@@ -1129,8 +1129,8 @@
 		OS.g_simple_action_set_state(actionHandle, OS.g_variant_new_string(Converter.javaStringToCString(selected ? "toggled" : "untoggled")));
 	} else {
 		OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, ACTIVATE);
-		GTK.gtk_check_menu_item_set_active (handle, selected);
-		if ((style & SWT.RADIO) != 0) GTK.gtk_check_menu_item_set_active (groupHandle, !selected);
+		GTK3.gtk_check_menu_item_set_active (handle, selected);
+		if ((style & SWT.RADIO) != 0) GTK3.gtk_check_menu_item_set_active (groupHandle, !selected);
 		OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, ACTIVATE);
 	}
 }
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 d53a31d..044f4de 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
@@ -18,6 +18,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 are used to inform or warn the user.
@@ -167,12 +168,12 @@
 			 * TODO: This may not work as we are setting the icon list of the GtkWindow through
 			 * GdkToplevel (which has no way of retrieving the icon list set. See bug 572200.
 			 */
-			long iconName = GTK.gtk_window_get_icon_name(parentHandle);
+			long iconName = GTK4.gtk_window_get_icon_name(parentHandle);
 			if (iconName != 0) {
-				GTK.gtk_window_set_icon_name(handle, iconName);
+				GTK4.gtk_window_set_icon_name(handle, iconName);
 			}
 		} else {
-			long pixbufs = GTK.gtk_window_get_icon_list(parentHandle);
+			long pixbufs = GTK3.gtk_window_get_icon_list(parentHandle);
 			if (pixbufs != 0) {
 				GTK3.gtk_window_set_icon_list(handle, pixbufs);
 				OS.g_list_free (pixbufs);
@@ -225,7 +226,7 @@
 	display.removeIdleProc();
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_destroy(handle);
+		GTK4.gtk_window_destroy(handle);
 	} else {
 		GTK.gtk_widget_destroy(handle);
 	}
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 01dd15c..171106a 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
@@ -727,9 +727,9 @@
 			if (isChildShell && (style & SWT.ON_TOP) != 0) type = GTK.GTK_WINDOW_POPUP;
 			if (GTK.GTK4) {
 				// TODO: GTK4 need to handle for GTK_WINDOW_POPUP type
-				shellHandle = GTK.gtk_window_new();
+				shellHandle = GTK4.gtk_window_new();
 			} else {
-				shellHandle = GTK.gtk_window_new(type);
+				shellHandle = GTK3.gtk_window_new(type);
 			}
 		} else {
 			shellHandle = GTK.gtk_plug_new(handle);
@@ -767,7 +767,7 @@
 						GTK.gtk_window_set_transient_for(shellHandle, parent.topHandle());
 					}
 					// this marks the logical parent
-					GTK.gtk_window_set_attached_to(shellHandle, parent.topHandle());
+					GTK3.gtk_window_set_attached_to(shellHandle, parent.topHandle());
 					// implements the gtk_window_set_destroy_with_parent for the *logical* parent
 					if (parent != topLevelParent && isMappedToPopup()) {
 						parent.popupChild = this;
@@ -779,11 +779,11 @@
 				// if child shells are minimizable, we want them to have a
 				// taskbar icon, so they can be unminimized
 				if ((style & SWT.MIN) == 0) {
-					GTK.gtk_window_set_skip_taskbar_hint(shellHandle, true);
+					GTK3.gtk_window_set_skip_taskbar_hint(shellHandle, true);
 				}
 			}
 		} else if ((style & SWT.ON_TOP) != 0) {
-			GTK.gtk_window_set_keep_above(shellHandle, true);
+			GTK3.gtk_window_set_keep_above(shellHandle, true);
 		}
 
 		GTK.gtk_window_set_title(shellHandle, new byte[1]);
@@ -796,7 +796,7 @@
 			gtk_container_set_border_width(shellHandle, 1);
 		}
 		if ((style & SWT.TOOL) != 0) {
-			GTK.gtk_window_set_type_hint(shellHandle, GDK.GDK_WINDOW_TYPE_HINT_UTILITY);
+			GTK3.gtk_window_set_type_hint(shellHandle, GDK.GDK_WINDOW_TYPE_HINT_UTILITY);
 		}
 		if ((style & SWT.NO_TRIM) != 0) {
 			GTK.gtk_window_set_decorated(shellHandle, false);
@@ -1242,7 +1242,7 @@
 	if (GTK.GTK4) {
 		// TODO: GTK4 GtkWindow no longer has the ability to get position
 	} else {
-		GTK.gtk_window_get_position (shellHandle, x, y);
+		GTK3.gtk_window_get_position (shellHandle, x, y);
 	}
 	return new Point (x [0], y [0]);
 }
@@ -1476,7 +1476,7 @@
 				display.resizeLocationX = eventRX[0];
 				display.resizeLocationY = eventRY[0];
 				int [] x = new int [1], y = new int [1];
-				GTK.gtk_window_get_position (shellHandle, x, y);
+				GTK3.gtk_window_get_position (shellHandle, x, y);
 				display.resizeBoundsX = x [0];
 				display.resizeBoundsY = y [0];
 				GtkAllocation allocation = new GtkAllocation ();
@@ -1502,7 +1502,7 @@
 @Override
 long gtk_configure_event (long widget, long event) {
 	int [] x = new int [1], y = new int [1];
-	GTK.gtk_window_get_position (shellHandle, x, y);
+	GTK3.gtk_window_get_position (shellHandle, x, y);
 
 	if (!isVisible ()) {
 		return 0; //We shouldn't handle move/resize events if shell is hidden.
@@ -1732,7 +1732,7 @@
 						GDK.gdk_window_move_resize (gtk_widget_get_window (shellHandle), x, y, width, height);
 					}
 				} else {
-					GTK.gtk_window_resize (shellHandle, width, height);
+					GTK3.gtk_window_resize (shellHandle, width, height);
 				}
 			} else {
 				double [] eventX = new double [1];
@@ -1810,7 +1810,7 @@
 	if (GTK.GTK4) {
 		GTK.gtk_window_get_default_size(shellHandle, widthA, heightA);
 	} else {
-		GTK.gtk_window_get_size(shellHandle, widthA, heightA);
+		GTK3.gtk_window_get_size(shellHandle, widthA, heightA);
 	}
 	width = widthA[0];
 	height = heightA[0];
@@ -1925,7 +1925,7 @@
 	}
 
 	if ((style & SWT.ON_TOP) != 0) {
-		if (!GTK.GTK4) GTK.gtk_window_set_keep_above(shellHandle, true);
+		if (!GTK.GTK4) GTK3.gtk_window_set_keep_above(shellHandle, true);
 	}
 	return result;
 }
@@ -2266,8 +2266,8 @@
 	if (move) {
 		if (!GTK.GTK4) {
 			int [] x_pos = new int [1], y_pos = new int [1];
-			GTK.gtk_window_get_position(shellHandle, x_pos, y_pos);
-			GTK.gtk_window_move(shellHandle, x, y);
+			GTK3.gtk_window_get_position(shellHandle, x_pos, y_pos);
+			GTK3.gtk_window_move(shellHandle, x, y);
 			/*
 			 * Bug in GTK: gtk_window_get_position () is not always up-to-date right after
 			 * gtk_window_move (). The random delays cause problems like bug 445900.
@@ -2278,7 +2278,7 @@
 			 */
 			for (int i = 0; i < 1000; i++) {
 				int [] x2_pos = new int [1], y2_pos = new int [1];
-				GTK.gtk_window_get_position(shellHandle, x2_pos, y2_pos);
+				GTK3.gtk_window_get_position(shellHandle, x2_pos, y2_pos);
 				if (x2_pos[0] == x && y2_pos[0] == y) {
 					break;
 				}
@@ -2310,7 +2310,7 @@
 			if (GTK.GTK4) {
 				GTK.gtk_window_set_default_size(shellHandle, width, height);
 			} else {
-				GTK.gtk_window_resize (shellHandle, width, height);
+				GTK3.gtk_window_resize (shellHandle, width, height);
 			}
 		}
 		boolean changed = width != oldWidth || height != oldHeight;
@@ -2488,7 +2488,7 @@
 			if (GTK.GTK4) {
 				GTK.gtk_window_set_default_size(shellHandle, width, height);
 			} else {
-				GTK.gtk_window_resize (shellHandle, width, height);
+				GTK3.gtk_window_resize (shellHandle, width, height);
 			}
 		}
 	}
@@ -2553,15 +2553,15 @@
 	}
 	if (minimized) {
 		if (GTK.GTK4) {
-			GTK.gtk_window_minimize(shellHandle);
+			GTK4.gtk_window_minimize(shellHandle);
 		} else {
-			GTK.gtk_window_iconify (shellHandle);
+			GTK3.gtk_window_iconify (shellHandle);
 		}
 	} else {
 		if (GTK.GTK4) {
-			GTK.gtk_window_unminimize(shellHandle);
+			GTK4.gtk_window_unminimize(shellHandle);
 		} else {
-			GTK.gtk_window_deiconify (shellHandle);
+			GTK3.gtk_window_deiconify (shellHandle);
 		}
 		bringToTop (false);
 	}
@@ -2835,7 +2835,7 @@
 		 * up in front of the full-screen window.
 		 */
 		if (parent!=null && parent.getShell().getFullScreen()) {
-			GTK.gtk_window_set_type_hint(shellHandle, GDK.GDK_WINDOW_TYPE_HINT_DIALOG);
+			GTK3.gtk_window_set_type_hint(shellHandle, GDK.GDK_WINDOW_TYPE_HINT_DIALOG);
 		}
 	} else {
 		updateModal ();
@@ -2874,10 +2874,10 @@
 		 */
 		if (oldWidth == 0 && oldHeight == 0) {
 			int [] init_width = new int[1], init_height = new int[1];
-			GTK.gtk_window_get_size(shellHandle, init_width, init_height);
-			GTK.gtk_window_resize(shellHandle, 1, 1);
+			GTK3.gtk_window_get_size(shellHandle, init_width, init_height);
+			GTK3.gtk_window_resize(shellHandle, 1, 1);
 			GTK.gtk_widget_show (shellHandle);
-			GTK.gtk_window_resize(shellHandle, init_width[0], init_height[0]);
+			GTK3.gtk_window_resize(shellHandle, init_width[0], init_height[0]);
 			resizeBounds (init_width[0], init_height[0], false);
 		} else {
 			GTK.gtk_widget_show (shellHandle);
@@ -3013,7 +3013,7 @@
 	}
 
 	if (GTK.GTK4) {
-		GTK.gtk_window_set_child (shellHandle, vboxHandle);
+		GTK4.gtk_window_set_child (shellHandle, vboxHandle);
 	} else {
 		GTK3.gtk_container_add (shellHandle, vboxHandle);
 	}
@@ -3060,7 +3060,7 @@
 	if (y[0] + height > dest.y + dest.height) {
 		y[0] = (dest.y + dest.height) - height;
 	}
-	GTK.gtk_window_move (handle, x [0], y [0]);
+	GTK3.gtk_window_move (handle, x [0], y [0]);
 	return 0;
 }
 
@@ -3319,7 +3319,7 @@
 		if (GTK.GTK4) {
 			// TODO: GTK4 GtkWindow no longer has the ability to get position
 		} else {
-			GTK.gtk_window_get_position (shellHandle, x, y);
+			GTK3.gtk_window_get_position (shellHandle, x, y);
 		}
 	} else {
 		if (GTK.GTK4) {
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 27ef6d8..3b4f5f4 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
@@ -560,7 +560,7 @@
 
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = GTK.gtk_text_get_buffer(entryHandle);
+		long bufferHandle = GTK4.gtk_text_get_buffer(entryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
 		stringPtr = GTK.gtk_entry_get_text(handle);
@@ -630,7 +630,7 @@
 long gtk_changed (long widget) {
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = GTK.gtk_text_get_buffer(entryHandle);
+		long bufferHandle = GTK4.gtk_text_get_buffer(entryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
 		stringPtr = GTK.gtk_entry_get_text(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 00e5a72..49bd4a8 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
@@ -137,7 +137,7 @@
 		GTK.gtk_widget_add_css_class(handle, Converter.javaStringToCString("toolbar"));
 	} else {
 		GTK.gtk_widget_set_has_window(fixedHandle, true);
-		handle = GTK.gtk_toolbar_new ();
+		handle = GTK3.gtk_toolbar_new ();
 	}
 
 	if (handle == 0) error (SWT.ERROR_NO_HANDLES);
@@ -158,7 +158,7 @@
 	* tool bar preferred size is too big with GTK_ICON_SIZE_LARGE_TOOLBAR
 	* when the tool bar item has no image or text.
 	*/
-	if (!GTK.GTK4) GTK.gtk_toolbar_set_icon_size (handle, GTK.GTK_ICON_SIZE_SMALL_TOOLBAR);
+	if (!GTK.GTK4) GTK3.gtk_toolbar_set_icon_size (handle, GTK.GTK_ICON_SIZE_SMALL_TOOLBAR);
 
 	// In GTK 3 font description is inherited from parent widget which is not how SWT has always worked,
 	// reset to default font to get the usual behavior
@@ -187,9 +187,9 @@
 		 * to display. The fix is to disable it before the computation of
 		 * size and enable it if WRAP style is set.
 		 */
-		GTK.gtk_toolbar_set_show_arrow (handle, false);
+		GTK3.gtk_toolbar_set_show_arrow (handle, false);
 		size = computeNativeSize (handle, wHint, hHint, changed);
-		if ((style & SWT.WRAP) != 0) GTK.gtk_toolbar_set_show_arrow (handle, true);
+		if ((style & SWT.WRAP) != 0) GTK3.gtk_toolbar_set_show_arrow (handle, true);
 	}
 
 	return size;
@@ -581,7 +581,7 @@
 		} else if (hasImage) {
 			type = GTK.GTK_TOOLBAR_ICONS;
 		}
-		GTK.gtk_toolbar_set_style (handle, type);
+		GTK3.gtk_toolbar_set_style (handle, type);
 	}
 }
 
@@ -628,7 +628,7 @@
 
 @Override
 int setBounds (int x, int y, int width, int height, boolean move, boolean resize) {
-	if (!GTK.GTK4) GTK.gtk_toolbar_set_show_arrow (handle, false);
+	if (!GTK.GTK4) GTK3.gtk_toolbar_set_show_arrow (handle, false);
 	int result = super.setBounds (x, y, width, height, move, resize);
 	if ((result & RESIZED) != 0) relayout ();
 	if ((style & SWT.WRAP) != 0) {
@@ -637,7 +637,7 @@
 			 * overflow menu. May require the use of the "toolbar" style class
 			 * applied to the widget.  */
 		} else {
-			GTK.gtk_toolbar_set_show_arrow (handle, true);
+			GTK3.gtk_toolbar_set_show_arrow (handle, true);
 		}
 	}
 
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 9a83956..5a93bbc 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
@@ -204,9 +204,9 @@
 				handle = GTK.gtk_separator_new(GTK.GTK_ORIENTATION_VERTICAL);
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 			} else {
-				handle = GTK.gtk_separator_tool_item_new ();
+				handle = GTK3.gtk_separator_tool_item_new ();
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
-				GTK.gtk_separator_tool_item_set_draw(handle, true);
+				GTK3.gtk_separator_tool_item_set_draw(handle, true);
 			}
 			break;
 		case SWT.DROP_DOWN:
@@ -230,7 +230,7 @@
 				arrowHandle = GTK.gtk_widget_get_first_child(menuButton);
 				GTK.gtk_menu_button_set_use_underline(menuButton, true);
 			} else {
-				handle = GTK.gtk_menu_tool_button_new(0, null);
+				handle = GTK3.gtk_menu_tool_button_new(0, null);
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 
 				long child = GTK3.gtk_bin_get_child(handle);
@@ -262,7 +262,7 @@
 				GTK4.gtk_button_set_child(handle, boxHandle);
 				GTK.gtk_button_set_use_underline(handle, true);
 			} else {
-				handle = GTK.gtk_toggle_tool_button_new();
+				handle = GTK3.gtk_toggle_tool_button_new();
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
 			}
 			break;
@@ -278,7 +278,7 @@
 
 				GTK.gtk_button_set_use_underline(handle, true);
 			} else {
-				handle = GTK.gtk_tool_button_new (0, null);
+				handle = GTK3.gtk_tool_button_new (0, null);
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 			}
 
@@ -305,10 +305,10 @@
 			imageHandle = GTK.gtk_image_new_from_surface(0);
 			if (imageHandle == 0) error(SWT.ERROR_NO_HANDLES);
 
-			GTK.gtk_tool_button_set_icon_widget(handle, imageHandle);
-			GTK.gtk_tool_button_set_label_widget(handle, labelHandle);
+			GTK3.gtk_tool_button_set_icon_widget(handle, imageHandle);
+			GTK3.gtk_tool_button_set_label_widget(handle, labelHandle);
 
-			GTK.gtk_tool_button_set_use_underline (handle, true);
+			GTK3.gtk_tool_button_set_use_underline (handle, true);
 		}
 	}
 
@@ -325,7 +325,7 @@
 	if (GTK.GTK4) {
 		GTK.gtk_box_set_homogeneous(parent.handle, false);
 	} else {
-		GTK.gtk_tool_item_set_homogeneous(handle, false);
+		GTK3.gtk_tool_item_set_homogeneous(handle, false);
 	}
 }
 
@@ -527,7 +527,7 @@
 	if (GTK.GTK4) {
 		selection = GTK.gtk_toggle_button_get_active(handle);
 	} else {
-		selection = GTK.gtk_toggle_tool_button_get_active(handle);
+		selection = GTK3.gtk_toggle_tool_button_get_active(handle);
 	}
 
 	return selection;
@@ -652,7 +652,7 @@
 		 * for the tool-item. If the text/image of the item changes,
 		 * then the proxyMenu is reset.
 		 */
-		GTK.gtk_tool_item_set_proxy_menu_item (widget, buffer, proxyMenuItem);
+		GTK3.gtk_tool_item_set_proxy_menu_item (widget, buffer, proxyMenuItem);
 		return 1;
 	}
 
@@ -682,7 +682,7 @@
 				else {
 					label = Converter.wcsToMbcs(text, true);
 				}
-				long menuItem = GTK.gtk_menu_item_new ();
+				long menuItem = GTK3.gtk_menu_item_new ();
 				if (menuItem == 0) error (SWT.ERROR_NO_HANDLES);
 
 				long boxHandle = gtk_box_new (GTK.GTK_ORIENTATION_HORIZONTAL, false, 6);
@@ -699,14 +699,14 @@
 				GTK3.gtk_container_add (boxHandle, menuImage);
 				gtk_box_pack_end (boxHandle, menuLabel, true, true, 0);
 				GTK3.gtk_container_add (menuItem, boxHandle);
-				GTK.gtk_tool_item_set_proxy_menu_item (widget, buffer, menuItem);
+				GTK3.gtk_tool_item_set_proxy_menu_item (widget, buffer, menuItem);
 
 				/*
 				 * Since the arrow button does not appear in the drop_down
 				 * item, we request the menu-item and then, hook the
 				 * activate signal to send the Arrow selection signal.
 				 */
-				proxyMenuItem = GTK.gtk_tool_item_get_proxy_menu_item (widget, buffer);
+				proxyMenuItem = GTK3.gtk_tool_item_get_proxy_menu_item (widget, buffer);
 				OS.g_signal_connect(menuItem, OS.activate, ToolBar.menuItemSelectedFunc.getAddress(), handle);
 				return 1;
 			}
@@ -1282,7 +1282,7 @@
 			/* TODO: GTK4 have to implement our own overflow menu */
 		} else {
 			proxyMenuItem = 0;
-			proxyMenuItem = GTK.gtk_tool_item_retrieve_proxy_menu_item (handle);
+			proxyMenuItem = GTK3.gtk_tool_item_retrieve_proxy_menu_item (handle);
 			OS.g_signal_connect(proxyMenuItem, OS.activate, ToolBar.menuItemSelectedFunc.getAddress(), handle);
 		}
 	}
@@ -1328,7 +1328,7 @@
 	if (GTK.GTK4) {
 		GTK.gtk_toggle_button_set_active (handle, selected);
 	} else {
-		GTK.gtk_toggle_tool_button_set_active (handle, selected);
+		GTK3.gtk_toggle_tool_button_set_active (handle, selected);
 	}
 	OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CLICKED);
 }
@@ -1388,7 +1388,7 @@
 	 * See bug 543895.
 	 */
 	if ((parent.style & SWT.RIGHT) != 0) {
-		if (!GTK.GTK4) GTK.gtk_tool_item_set_is_important (handle, !string.isEmpty());
+		if (!GTK.GTK4) GTK3.gtk_tool_item_set_is_important (handle, !string.isEmpty());
 	}
 	/*
 	* If Text/Image of a tool-item changes, then it is
@@ -1400,7 +1400,7 @@
 			/* TODO: GTK4 have to implement our own overflow menu */
 		} else {
 			proxyMenuItem = 0;
-			proxyMenuItem = GTK.gtk_tool_item_retrieve_proxy_menu_item (handle);
+			proxyMenuItem = GTK3.gtk_tool_item_retrieve_proxy_menu_item (handle);
 			OS.g_signal_connect(proxyMenuItem, OS.activate, ToolBar.menuItemSelectedFunc.getAddress(), handle);
 		}
 	}
@@ -1452,7 +1452,7 @@
 			/* TODO: GTK4 have to implement our own overflow menu */
 		} else {
 			proxyMenuItem = 0;
-			proxyMenuItem = GTK.gtk_tool_item_retrieve_proxy_menu_item (handle);
+			proxyMenuItem = GTK3.gtk_tool_item_retrieve_proxy_menu_item (handle);
 			OS.g_signal_connect(proxyMenuItem, OS.activate, ToolBar.menuItemSelectedFunc.getAddress(), handle);
 		}
 	}
@@ -1522,7 +1522,7 @@
 		if (handle != 0) GTK.gtk_widget_show (handle);
 		if (labelHandle != 0) GTK.gtk_widget_show (labelHandle);
 		if (imageHandle != 0) GTK.gtk_widget_show (imageHandle);
-		GTK.gtk_toolbar_insert(parent.handle, handle, index);
+		GTK3.gtk_toolbar_insert(parent.handle, handle, index);
 	}
 }
 
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 3d3b8ff..d65f5d3 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
@@ -20,6 +20,8 @@
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.cairo.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * Instances of this class represent popup windows that are used
@@ -172,7 +174,7 @@
 	point = getLocation ();
 	int x = point.x;
 	int y = point.y;
-	GTK.gtk_window_resize (handle, w, h + TIP_HEIGHT);
+	GTK3.gtk_window_resize (handle, w, h + TIP_HEIGHT);
 	int[] polyline;
 	Rectangle bounds = display.getBounds();
 	int width = bounds != null && GTK.GTK4 ? bounds.width : GDK.gdk_screen_width();
@@ -202,7 +204,7 @@
 				borderPolygon[12] = w-35;
 				borderPolygon[14] = borderPolygon[16]  = w-16;
 			}
-			GTK.gtk_window_move (handle, Math.max(0, x - 17), y);
+			GTK3.gtk_window_move (handle, Math.max(0, x - 17), y);
 		} else {
 			polyline = new int[] {
 				0, 5, 1, 5, 1, 3, 3, 1,  5, 1, 5, 0,
@@ -225,7 +227,7 @@
 				borderPolygon[36] = borderPolygon[38] = w-17;
 				borderPolygon [40] = w-35;
 			}
-			GTK.gtk_window_move (handle, Math.max(0, x - 17), y - h - TIP_HEIGHT);
+			GTK3.gtk_window_move (handle, Math.max(0, x - 17), y - h - TIP_HEIGHT);
 		}
 	} else {
 		if (dest.height >= y + h + TIP_HEIGHT) {
@@ -251,7 +253,7 @@
 				borderPolygon[12] =  borderPolygon[14] = 16;
 				borderPolygon [16] = 35;
 			}
-			GTK.gtk_window_move (handle, Math.max(dest.width- w, x - w + 17), y);
+			GTK3.gtk_window_move (handle, Math.max(dest.width- w, x - w + 17), y);
 		} else {
 			polyline = new int[] {
 				0, 5, 1, 5, 1, 3, 3, 1,  5, 1, 5, 0,
@@ -274,7 +276,7 @@
 				borderPolygon[36] = 35;
 				borderPolygon[38] = borderPolygon [40] = 17;
 			}
-			GTK.gtk_window_move (handle, Math.max(dest.width - w, x - w + 17), y - h - TIP_HEIGHT);
+			GTK3.gtk_window_move (handle, Math.max(dest.width - w, x - w + 17), y - h - TIP_HEIGHT);
 		}
 	}
 	GTK.gtk_widget_realize(handle);
@@ -288,14 +290,14 @@
 void createHandle (int index) {
 	if ((style & SWT.BALLOON) != 0) {
 		state |= HANDLE;
-		handle = GTK.gtk_window_new (GTK.GTK_WINDOW_POPUP);
+		handle = GTK3.gtk_window_new (GTK.GTK_WINDOW_POPUP);
 		Color background = display.getSystemColor (SWT.COLOR_INFO_BACKGROUND);
 		long context = GTK.gtk_widget_get_style_context (handle);
 		GdkRGBA bgRGBA = background.handle;
 		String css = "window {background-color: " + display.gtk_rgba_to_css_string(bgRGBA) + ";}";
 		gtk_css_provider_load_from_css (context, css);
 		GTK.gtk_style_context_invalidate (context);
-		GTK.gtk_window_set_type_hint (handle, GDK.GDK_WINDOW_TYPE_HINT_TOOLTIP);
+		GTK3.gtk_window_set_type_hint (handle, GDK.GDK_WINDOW_TYPE_HINT_TOOLTIP);
 	}
 }
 
@@ -530,12 +532,12 @@
 		if (buffer != null) {
 			long iconTheme;
 			if (GTK.GTK4) {
-				iconTheme = GTK.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
+				iconTheme = GTK4.gtk_icon_theme_get_for_display(GDK.gdk_display_get_default());
 			} else {
-				iconTheme = GTK.gtk_icon_theme_get_default();
+				iconTheme = GTK3.gtk_icon_theme_get_default();
 			}
 
-			long pixbuf = GTK.gtk_icon_theme_load_icon(iconTheme, buffer, GTK.GTK_ICON_SIZE_MENU, 0, 0);
+			long pixbuf = GTK3.gtk_icon_theme_load_icon(iconTheme, buffer, GTK.GTK_ICON_SIZE_MENU, 0, 0);
 			GDK.gdk_cairo_set_source_pixbuf(cairo, pixbuf, x, y);
 			Cairo.cairo_paint (cairo);
 			OS.g_object_unref (pixbuf);
@@ -588,7 +590,7 @@
 	int h = widgetAllocation.height;
 	if (dest.height < y + h) y -= h;
 	if (dest.width < x + w) x -= w;
-	GTK.gtk_window_move (widget, x, y);
+	GTK3.gtk_window_move (widget, x, y);
 	return 0;
 }
 
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 9a8f8ab..c56c9bb 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
@@ -21,6 +21,7 @@
 import org.eclipse.swt.internal.cairo.*;
 import org.eclipse.swt.internal.gtk.*;
 import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  *  Instances of this class implement rubber banding rectangles that are
@@ -422,7 +423,7 @@
 	GTK.gtk_widget_shape_combine_region (overlay, region);
 	Cairo.cairo_region_destroy (region);
 	if (GTK.GTK4) {
-		long overlaySurface = GTK.gtk_native_get_surface(GTK.gtk_widget_get_native (overlay));
+		long overlaySurface = GTK4.gtk_native_get_surface(GTK.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 {
@@ -845,8 +846,8 @@
 	lastCursor = this.cursor != null ? this.cursor.handle : 0;
 
 	cachedCombinedDisplayResolution = Display.getDefault().getBounds(); // In case resolution was changed during run time.
-	overlay = GTK.gtk_window_new (GTK.GTK_WINDOW_POPUP);
-	GTK.gtk_window_set_skip_taskbar_hint (overlay, true);
+	overlay = GTK3.gtk_window_new (GTK.GTK_WINDOW_POPUP);
+	GTK3.gtk_window_set_skip_taskbar_hint (overlay, true);
 	GTK.gtk_window_set_title (overlay, new byte [1]);
 	if (parent != null) GTK.gtk_window_set_transient_for(overlay, parent.topHandle());
 	GTK.gtk_widget_realize (overlay);
@@ -856,8 +857,8 @@
 	}
 	setTrackerBackground(true);
 	Rectangle bounds = display.getBoundsInPixels();
-	GTK.gtk_window_move (overlay, bounds.x, bounds.y);
-	GTK.gtk_window_resize (overlay, bounds.width, bounds.height);
+	GTK3.gtk_window_move (overlay, bounds.x, bounds.y);
+	GTK3.gtk_window_resize (overlay, bounds.width, bounds.height);
 	GTK.gtk_widget_show (overlay);
 
 	/* Tracker behaves like a Dialog with its own OS event loop. */
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 38e9c32..6ec0e52 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
@@ -2001,7 +2001,7 @@
 
 long gtk_widget_get_surface (long widget){
 	GTK.gtk_widget_realize(widget);
-	return GTK.gtk_native_get_surface(GTK.gtk_widget_get_native (widget));
+	return GTK4.gtk_native_get_surface(GTK.gtk_widget_get_native (widget));
 }
 
 void gdk_window_get_size (long drawable, int[] width, int[] height) {