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

- Move GtkClipboard, GtkNativeDiglog, GtkRadioButton, GtkScrolledWindow,
GtkStatusIcon (except for function that requires GdkRectangle as a
parameter), GtkTargetList

Change-Id: I2432d80949c66b9f00cdef08ee506f90c9690a20
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/179697
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
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 5ddf50c..fa57a8d 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
@@ -17,6 +17,7 @@
 import org.eclipse.swt.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 import org.eclipse.swt.widgets.*;
 
 /**
@@ -39,10 +40,10 @@
 	private static long TARGET;
 
 	static {
-		GTKCLIPBOARD = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK.gtk_clipboard_get (GDK.GDK_NONE);
+		GTKCLIPBOARD = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
 		byte[] buffer = Converter.wcsToMbcs("PRIMARY", true);
 		long primary = GDK.gdk_atom_intern(buffer, false);
-		GTKPRIMARYCLIPBOARD = GTK.GTK4 ? GDK.gdk_display_get_primary_clipboard(GDK.gdk_display_get_default()) : GTK.gtk_clipboard_get(primary);
+		GTKPRIMARYCLIPBOARD = GTK.GTK4 ? GDK.gdk_display_get_primary_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get(primary);
 		buffer = Converter.wcsToMbcs("TARGETS", true);
 		TARGET = GDK.gdk_atom_intern(buffer, false);
 	}
@@ -618,7 +619,7 @@
 	String key = "org.eclipse.swt.internal.gtk.dispatchEvent";
 	Display display = this.display;
 	display.setData(key, new int[]{GDK.GDK_PROPERTY_NOTIFY, GDK.GDK_SELECTION_CLEAR, GDK.GDK_SELECTION_REQUEST, GDK.GDK_SELECTION_NOTIFY});
-	long selection_data = GTK.gtk_clipboard_wait_for_contents(clipboard, target);
+	long selection_data = GTK3.gtk_clipboard_wait_for_contents(clipboard, target);
 	display.setData(key, null);
 	long duration = System.currentTimeMillis() - startTime;
 	if (selection_data == 0 && duration > 5000) {
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 54cde28..22ebc71 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
@@ -16,6 +16,7 @@
 
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
 import org.eclipse.swt.widgets.*;
 
 class ClipboardProxy {
@@ -70,7 +71,7 @@
 	if (GTK.GTK4) {
 		GDK.gdk_clipboard_set_content(clipboard, 0);
 	} else {
-		GTK.gtk_clipboard_clear(clipboard);
+		GTK3.gtk_clipboard_clear(clipboard);
 	}
 }
 
@@ -91,10 +92,10 @@
 void dispose () {
 	if (display == null) return;
 	if (activeClipboard != null) {
-		GTK.gtk_clipboard_store(Clipboard.GTKCLIPBOARD);
+		GTK3.gtk_clipboard_store(Clipboard.GTKCLIPBOARD);
 	}
 	if (activePrimaryClipboard != null) {
-		GTK.gtk_clipboard_store(Clipboard.GTKPRIMARYCLIPBOARD);
+		GTK3.gtk_clipboard_store(Clipboard.GTKPRIMARYCLIPBOARD);
 	}
 	display = null;
 	if (getFunc != null ) getFunc.dispose();
@@ -186,10 +187,10 @@
 			* though we set the data again. So, this API has to be used whenever we
 			* are setting the contents.
 			*/
-			if (!GTK.gtk_clipboard_set_with_owner (Clipboard.GTKCLIPBOARD, pTargetsList, entries.length, getFuncProc, clearFuncProc, clipboardOwner)) {
+			if (!GTK3.gtk_clipboard_set_with_owner (Clipboard.GTKCLIPBOARD, pTargetsList, entries.length, getFuncProc, clearFuncProc, clipboardOwner)) {
 				return false;
 			}
-			GTK.gtk_clipboard_set_can_store(Clipboard.GTKCLIPBOARD, 0, 0);
+			GTK3.gtk_clipboard_set_can_store(Clipboard.GTKCLIPBOARD, 0, 0);
 			activeClipboard = owner;
 		}
 		if ((clipboards & DND.SELECTION_CLIPBOARD) != 0) {
@@ -197,10 +198,10 @@
 			primaryClipboardDataTypes = dataTypes;
 			long getFuncProc = getFunc.getAddress();
 			long clearFuncProc = clearFunc.getAddress();
-			if (!GTK.gtk_clipboard_set_with_owner (Clipboard.GTKPRIMARYCLIPBOARD, pTargetsList, entries.length, getFuncProc, clearFuncProc, clipboardOwner)) {
+			if (!GTK3.gtk_clipboard_set_with_owner (Clipboard.GTKPRIMARYCLIPBOARD, pTargetsList, entries.length, getFuncProc, clearFuncProc, clipboardOwner)) {
 				return false;
 			}
-			GTK.gtk_clipboard_set_can_store(Clipboard.GTKPRIMARYCLIPBOARD, 0, 0);
+			GTK3.gtk_clipboard_set_can_store(Clipboard.GTKPRIMARYCLIPBOARD, 0, 0);
 			activePrimaryClipboard = owner;
 		}
 		return true;
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 0bcbaaa..6169203 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
@@ -620,7 +620,7 @@
 void onDispose() {
 	if (control == null) return;
 	if (targetList != 0) {
-		GTK.gtk_target_list_unref(targetList);
+		GTK3.gtk_target_list_unref(targetList);
 	}
 	targetList = 0;
 	if (controlListener != null) {
@@ -709,7 +709,7 @@
 		this.transferAgents = transferAgents;
 	} else {
 		if (targetList != 0) {
-			GTK.gtk_target_list_unref(targetList);
+			GTK3.gtk_target_list_unref(targetList);
 			targetList = 0;
 		}
 		this.transferAgents = transferAgents;
@@ -739,7 +739,7 @@
 		for (int i = 0; i < targets.length; i++) {
 			OS.memmove(pTargets + i*GtkTargetEntry.sizeof, targets[i], GtkTargetEntry.sizeof);
 		}
-		targetList = GTK.gtk_target_list_new(pTargets, targets.length);
+		targetList = GTK3.gtk_target_list_new(pTargets, targets.length);
 
 		for (int i = 0; i < targets.length; i++) {
 			OS.g_free(targets[i].target);
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 c809726..f18e48c 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
@@ -161,6 +161,72 @@
 }
 #endif
 
+#ifndef NO_gtk_1clipboard_1clear
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1clipboard_1clear)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1clear_FUNC);
+	gtk_clipboard_clear((GtkClipboard *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1clear_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1clipboard_1get
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1clipboard_1get)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1get_FUNC);
+	rc = (jlong)gtk_clipboard_get((GdkAtom)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1get_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1clipboard_1set_1can_1store
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1clipboard_1set_1can_1store)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1set_1can_1store_FUNC);
+	gtk_clipboard_set_can_store((GtkClipboard *)arg0, (const GtkTargetEntry *)arg1, (gint)arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1set_1can_1store_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1clipboard_1set_1with_1owner
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1clipboard_1set_1with_1owner)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jlong arg3, jlong arg4, jlong arg5)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1set_1with_1owner_FUNC);
+	rc = (jboolean)gtk_clipboard_set_with_owner((GtkClipboard *)arg0, (const GtkTargetEntry *)arg1, (guint)arg2, (GtkClipboardGetFunc)arg3, (GtkClipboardClearFunc)arg4, (GObject *)arg5);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1set_1with_1owner_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1clipboard_1store
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1clipboard_1store)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1store_FUNC);
+	gtk_clipboard_store((GtkClipboard *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1store_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1clipboard_1wait_1for_1contents
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1clipboard_1wait_1for_1contents)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1clipboard_1wait_1for_1contents_FUNC);
+	rc = (jlong)gtk_clipboard_wait_for_contents((GtkClipboard *)arg0, (GdkAtom)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1clipboard_1wait_1for_1contents_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1container_1add
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1container_1add)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -604,6 +670,42 @@
 }
 #endif
 
+#ifndef NO_gtk_1native_1dialog_1run
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1native_1dialog_1run)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1native_1dialog_1run_FUNC);
+	rc = (jint)gtk_native_dialog_run((GtkNativeDialog *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1native_1dialog_1run_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1radio_1button_1get_1group
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1radio_1button_1get_1group)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1radio_1button_1get_1group_FUNC);
+	rc = (jlong)gtk_radio_button_get_group((GtkRadioButton *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1radio_1button_1get_1group_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1radio_1button_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1radio_1button_1new)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1radio_1button_1new_FUNC);
+	rc = (jlong)gtk_radio_button_new((GSList *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1radio_1button_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)
@@ -624,6 +726,130 @@
 }
 #endif
 
+#ifndef NO_gtk_1scrolled_1window_1get_1shadow_1type
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1scrolled_1window_1get_1shadow_1type)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1get_1shadow_1type_FUNC);
+	rc = (jint)gtk_scrolled_window_get_shadow_type((GtkScrolledWindow *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1get_1shadow_1type_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1scrolled_1window_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1scrolled_1window_1new)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1new_FUNC);
+	rc = (jlong)gtk_scrolled_window_new((GtkAdjustment *)arg0, (GtkAdjustment *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1scrolled_1window_1set_1shadow_1type
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1scrolled_1window_1set_1shadow_1type)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1shadow_1type_FUNC);
+	gtk_scrolled_window_set_shadow_type((GtkScrolledWindow *)arg0, (GtkShadowType)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1shadow_1type_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1status_1icon_1get_1visible
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1status_1icon_1get_1visible)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1status_1icon_1get_1visible_FUNC);
+	rc = (jboolean)gtk_status_icon_get_visible((GtkStatusIcon*)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1status_1icon_1get_1visible_FUNC);
+	return rc;
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1status_1icon_1new
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1status_1icon_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1status_1icon_1new_FUNC);
+	rc = (jlong)gtk_status_icon_new();
+	GTK3_NATIVE_EXIT(env, that, gtk_1status_1icon_1new_FUNC);
+	return rc;
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1status_1icon_1set_1from_1pixbuf
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1status_1icon_1set_1from_1pixbuf)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1from_1pixbuf_FUNC);
+	gtk_status_icon_set_from_pixbuf((GtkStatusIcon*)arg0, (GdkPixbuf*)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1from_1pixbuf_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1status_1icon_1set_1tooltip_1text
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1status_1icon_1set_1tooltip_1text)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1tooltip_1text_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	gtk_status_icon_set_tooltip_text((GtkStatusIcon *)arg0, (const gchar *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1tooltip_1text_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1status_1icon_1set_1visible
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1status_1icon_1set_1visible)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1visible_FUNC);
+	gtk_status_icon_set_visible((GtkStatusIcon*)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1visible_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1target_1list_1new
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1target_1list_1new)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1target_1list_1new_FUNC);
+	rc = (jlong)gtk_target_list_new((const GtkTargetEntry *)arg0, (guint)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1target_1list_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1target_1list_1unref
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1target_1list_1unref)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1target_1list_1unref_FUNC);
+	gtk_target_list_unref((GtkTargetList *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1target_1list_1unref_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1widget_1get_1accessible
 JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1widget_1get_1accessible)
 	(JNIEnv *env, jclass that, jlong arg0)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c
index 3e79110..a3fc741 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
@@ -33,6 +33,12 @@
 	"gtk_1calendar_1select_1day",
 	"gtk_1calendar_1select_1month",
 	"gtk_1calendar_1set_1display_1options",
+	"gtk_1clipboard_1clear",
+	"gtk_1clipboard_1get",
+	"gtk_1clipboard_1set_1can_1store",
+	"gtk_1clipboard_1set_1with_1owner",
+	"gtk_1clipboard_1store",
+	"gtk_1clipboard_1wait_1for_1contents",
 	"gtk_1container_1add",
 	"gtk_1container_1forall",
 	"gtk_1container_1get_1border_1width",
@@ -71,7 +77,20 @@
 	"gtk_1init_1check",
 	"gtk_1main_1do_1event",
 	"gtk_1main_1iteration_1do",
+	"gtk_1native_1dialog_1run",
+	"gtk_1radio_1button_1get_1group",
+	"gtk_1radio_1button_1new",
 	"gtk_1rgb_1to_1hsv",
+	"gtk_1scrolled_1window_1get_1shadow_1type",
+	"gtk_1scrolled_1window_1new",
+	"gtk_1scrolled_1window_1set_1shadow_1type",
+	"gtk_1status_1icon_1get_1visible",
+	"gtk_1status_1icon_1new",
+	"gtk_1status_1icon_1set_1from_1pixbuf",
+	"gtk_1status_1icon_1set_1tooltip_1text",
+	"gtk_1status_1icon_1set_1visible",
+	"gtk_1target_1list_1new",
+	"gtk_1target_1list_1unref",
 	"gtk_1widget_1get_1accessible",
 	"gtk_1window_1set_1icon_1list",
 };
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 607df2e..34246d5 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
@@ -43,6 +43,12 @@
 	gtk_1calendar_1select_1day_FUNC,
 	gtk_1calendar_1select_1month_FUNC,
 	gtk_1calendar_1set_1display_1options_FUNC,
+	gtk_1clipboard_1clear_FUNC,
+	gtk_1clipboard_1get_FUNC,
+	gtk_1clipboard_1set_1can_1store_FUNC,
+	gtk_1clipboard_1set_1with_1owner_FUNC,
+	gtk_1clipboard_1store_FUNC,
+	gtk_1clipboard_1wait_1for_1contents_FUNC,
 	gtk_1container_1add_FUNC,
 	gtk_1container_1forall_FUNC,
 	gtk_1container_1get_1border_1width_FUNC,
@@ -81,7 +87,20 @@
 	gtk_1init_1check_FUNC,
 	gtk_1main_1do_1event_FUNC,
 	gtk_1main_1iteration_1do_FUNC,
+	gtk_1native_1dialog_1run_FUNC,
+	gtk_1radio_1button_1get_1group_FUNC,
+	gtk_1radio_1button_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_1status_1icon_1get_1visible_FUNC,
+	gtk_1status_1icon_1new_FUNC,
+	gtk_1status_1icon_1set_1from_1pixbuf_FUNC,
+	gtk_1status_1icon_1set_1tooltip_1text_FUNC,
+	gtk_1status_1icon_1set_1visible_FUNC,
+	gtk_1target_1list_1new_FUNC,
+	gtk_1target_1list_1unref_FUNC,
 	gtk_1widget_1get_1accessible_FUNC,
 	gtk_1window_1set_1icon_1list_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 aaebd21..14300b0 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
@@ -463,3 +463,47 @@
 }
 #endif
 
+#ifndef NO_gtk_1scrolled_1window_1get_1has_1frame
+JNIEXPORT jboolean JNICALL GTK4_NATIVE(gtk_1scrolled_1window_1get_1has_1frame)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jboolean rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1get_1has_1frame_FUNC);
+	rc = (jboolean)gtk_scrolled_window_get_has_frame((GtkScrolledWindow *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1get_1has_1frame_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1scrolled_1window_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1scrolled_1window_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1new_FUNC);
+	rc = (jlong)gtk_scrolled_window_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1scrolled_1window_1set_1child
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1scrolled_1window_1set_1child)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1child_FUNC);
+	gtk_scrolled_window_set_child((GtkScrolledWindow *)arg0, (GtkWidget *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1child_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1scrolled_1window_1set_1has_1frame
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1scrolled_1window_1set_1has_1frame)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1has_1frame_FUNC);
+	gtk_scrolled_window_set_has_frame((GtkScrolledWindow *)arg0, arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1has_1frame_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 f41d7b7..ba8c94b 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
@@ -59,6 +59,10 @@
 	"gtk_1picture_1set_1can_1shrink",
 	"gtk_1picture_1set_1paintable",
 	"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",
 };
 #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 54ce9be..5b6b423 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
@@ -69,4 +69,8 @@
 	gtk_1picture_1set_1can_1shrink_FUNC,
 	gtk_1picture_1set_1paintable_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,
 } 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 258f3cd..964c5e8 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
@@ -4425,72 +4425,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1clipboard_1clear
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1clipboard_1clear)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1clear_FUNC);
-	gtk_clipboard_clear((GtkClipboard *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1clear_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1clipboard_1get
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1clipboard_1get)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1get_FUNC);
-	rc = (jlong)gtk_clipboard_get((GdkAtom)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1get_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1clipboard_1set_1can_1store
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1clipboard_1set_1can_1store)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1set_1can_1store_FUNC);
-	gtk_clipboard_set_can_store((GtkClipboard *)arg0, (const GtkTargetEntry *)arg1, (gint)arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1set_1can_1store_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1clipboard_1set_1with_1owner
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1clipboard_1set_1with_1owner)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2, jlong arg3, jlong arg4, jlong arg5)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1set_1with_1owner_FUNC);
-	rc = (jboolean)gtk_clipboard_set_with_owner((GtkClipboard *)arg0, (const GtkTargetEntry *)arg1, (guint)arg2, (GtkClipboardGetFunc)arg3, (GtkClipboardClearFunc)arg4, (GObject *)arg5);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1set_1with_1owner_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1clipboard_1store
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1clipboard_1store)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1store_FUNC);
-	gtk_clipboard_store((GtkClipboard *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1store_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1clipboard_1wait_1for_1contents
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1clipboard_1wait_1for_1contents)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1clipboard_1wait_1for_1contents_FUNC);
-	rc = (jlong)gtk_clipboard_wait_for_contents((GtkClipboard *)arg0, (GdkAtom)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1clipboard_1wait_1for_1contents_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1color_1chooser_1add_1palette
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1color_1chooser_1add_1palette)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jint arg3, jlong arg4)
@@ -7246,18 +7180,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1native_1dialog_1run
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1native_1dialog_1run)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1native_1dialog_1run_FUNC);
-	rc = (jint)gtk_native_dialog_run((GtkNativeDialog *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1native_1dialog_1run_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)
@@ -8361,46 +8283,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1radio_1button_1get_1group
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1radio_1button_1get_1group)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1radio_1button_1get_1group_FUNC);
-/*
-	rc = (jlong)gtk_radio_button_get_group((GtkRadioButton *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_radio_button_get_group)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkRadioButton *))fp)((GtkRadioButton *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1radio_1button_1get_1group_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1radio_1button_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1radio_1button_1new)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1radio_1button_1new_FUNC);
-/*
-	rc = (jlong)gtk_radio_button_new((GSList *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_radio_button_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GSList *))fp)((GSList *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1radio_1button_1new_FUNC);
-	return rc;
-}
-#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)
@@ -8634,18 +8516,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrolled_1window_1get_1has_1frame
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1scrolled_1window_1get_1has_1frame)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1get_1has_1frame_FUNC);
-	rc = (jboolean)gtk_scrolled_window_get_has_frame((GtkScrolledWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1get_1has_1frame_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1scrolled_1window_1get_1hscrollbar
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrolled_1window_1get_1hscrollbar)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -8695,18 +8565,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrolled_1window_1get_1shadow_1type
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1scrolled_1window_1get_1shadow_1type)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1get_1shadow_1type_FUNC);
-	rc = (jint)gtk_scrolled_window_get_shadow_type((GtkScrolledWindow *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1get_1shadow_1type_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1scrolled_1window_1get_1vadjustment
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrolled_1window_1get_1vadjustment)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -8731,40 +8589,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrolled_1window_1new__
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrolled_1window_1new__)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1new___FUNC);
-	rc = (jlong)gtk_scrolled_window_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1new___FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1scrolled_1window_1new__JJ
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrolled_1window_1new__JJ)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1new__JJ_FUNC);
-	rc = (jlong)gtk_scrolled_window_new((GtkAdjustment *)arg0, (GtkAdjustment *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1new__JJ_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1scrolled_1window_1set_1child
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1child)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1child_FUNC);
-	gtk_scrolled_window_set_child((GtkScrolledWindow *)arg0, (GtkWidget *)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1child_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1scrolled_1window_1set_1hadjustment
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1hadjustment)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -8775,16 +8599,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrolled_1window_1set_1has_1frame
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1has_1frame)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1has_1frame_FUNC);
-	gtk_scrolled_window_set_has_frame((GtkScrolledWindow *)arg0, arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1has_1frame_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1scrolled_1window_1set_1policy
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1policy)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
@@ -8795,16 +8609,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrolled_1window_1set_1shadow_1type
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1shadow_1type)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1scrolled_1window_1set_1shadow_1type_FUNC);
-	gtk_scrolled_window_set_shadow_type((GtkScrolledWindow *)arg0, (GtkShadowType)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1scrolled_1window_1set_1shadow_1type_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1scrolled_1window_1set_1vadjustment
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1scrolled_1window_1set_1vadjustment)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -9219,34 +9023,6 @@
 G_GNUC_END_IGNORE_DEPRECATIONS
 #endif
 
-#ifndef NO_gtk_1status_1icon_1get_1visible
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1status_1icon_1get_1visible)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jboolean rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1status_1icon_1get_1visible_FUNC);
-	rc = (jboolean)gtk_status_icon_get_visible((GtkStatusIcon*)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1status_1icon_1get_1visible_FUNC);
-	return rc;
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
-
-#ifndef NO_gtk_1status_1icon_1new
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1status_1icon_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1status_1icon_1new_FUNC);
-	rc = (jlong)gtk_status_icon_new();
-	GTK_NATIVE_EXIT(env, that, gtk_1status_1icon_1new_FUNC);
-	return rc;
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
-
 #ifndef NO_gtk_1status_1icon_1position_1menu_1func
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1status_1icon_1position_1menu_1func)
 	(JNIEnv *env, jclass that)
@@ -9259,46 +9035,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1status_1icon_1set_1from_1pixbuf
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1status_1icon_1set_1from_1pixbuf)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1from_1pixbuf_FUNC);
-	gtk_status_icon_set_from_pixbuf((GtkStatusIcon*)arg0, (GdkPixbuf*)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1from_1pixbuf_FUNC);
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
-
-#ifndef NO_gtk_1status_1icon_1set_1tooltip_1text
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1status_1icon_1set_1tooltip_1text)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
-{
-	jbyte *lparg1=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1tooltip_1text_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	gtk_status_icon_set_tooltip_text((GtkStatusIcon *)arg0, (const gchar *)lparg1);
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1tooltip_1text_FUNC);
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
-
-#ifndef NO_gtk_1status_1icon_1set_1visible
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1status_1icon_1set_1visible)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1status_1icon_1set_1visible_FUNC);
-	gtk_status_icon_set_visible((GtkStatusIcon*)arg0, (gboolean)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1status_1icon_1set_1visible_FUNC);
-}
-G_GNUC_END_IGNORE_DEPRECATIONS
-#endif
-
 #ifndef NO_gtk_1style_1context_1add_1class
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1style_1context_1add_1class)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
@@ -9649,28 +9385,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1target_1list_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1target_1list_1new)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1target_1list_1new_FUNC);
-	rc = (jlong)gtk_target_list_new((const GtkTargetEntry *)arg0, (guint)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1target_1list_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1target_1list_1unref
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1target_1list_1unref)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1target_1list_1unref_FUNC);
-	gtk_target_list_unref((GtkTargetList *)arg0);
-	GTK_NATIVE_EXIT(env, that, gtk_1target_1list_1unref_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1text_1buffer_1copy_1clipboard
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1text_1buffer_1copy_1clipboard)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
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 ac9cf04..be4c7e9 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
@@ -214,26 +214,9 @@
 #define NO_memmove__Lorg_eclipse_swt_internal_gtk_GdkEventWindowState_2II
 #define NO_memmove__Lorg_eclipse_swt_internal_gtk_GdkEventWindowState_2JJ
 
-// No GtkClipboard on GTK4
-#define NO_gtk_1clipboard_1clear
-#define NO_gtk_1clipboard_1get
-#define NO_gtk_1clipboard_1set_1can_1store
-#define NO_gtk_1clipboard_1set_1with_1owner
-#define NO_gtk_1clipboard_1store
-#define NO_gtk_1clipboard_1wait_1for_1contents
-
 // No GtkStatusIcon on GTK4
 #define NO_gtk_1status_1icon_1get_1geometry
-#define NO_gtk_1status_1icon_1get_1visible
-#define NO_gtk_1status_1icon_1new
 #define NO_gtk_1status_1icon_1position_1menu_1func
-#define NO_gtk_1status_1icon_1set_1from_1pixbuf
-#define NO_gtk_1status_1icon_1set_1tooltip_1text
-#define NO_gtk_1status_1icon_1set_1visible
-
-// No GtkTargetList on GTK4
-#define NO_gtk_1target_1list_1new
-#define NO_gtk_1target_1list_1unref
 
 // No GdkScreen on GTK4, including parameter casts
 #define NO_gtk_1style_1context_1add_1provider_1for_1screen
@@ -425,8 +408,6 @@
 
 // No GtkShadowType in GTK4
 #define NO_gtk_1viewport_1set_1shadow_1type
-#define NO_gtk_1scrolled_1window_1set_1shadow_1type
-#define NO_gtk_1scrolled_1window_1get_1shadow_1type
 #define NO_gtk_1frame_1set_1shadow_1type
 
 // GtkIconTheme API changes
@@ -459,16 +440,6 @@
 #define NO_GTK_1TYPE_1TEXT_1VIEW_1ACCESSIBLE
 #define NO_swt_1fixed_1accessible_1register_1accessible
 
-// GtkScrolledWindow changes
-#define NO_gtk_1scrolled_1window_1new__JJ
-
-// GtkRadioButton removed
-#define NO_gtk_1radio_1button_1get_1group
-
-// GtkDialog changes
-#define NO_gtk_1dialog_1run
-#define NO_gtk_1native_1dialog_1run
-
 // GtkCellRenderer changes
 #define NO_GtkCellRendererPixbufClass_1sizeof
 #define NO_GtkCellRendererPixbuf_1sizeof
@@ -576,11 +547,6 @@
 #define NO_gtk_1icon_1theme_1lookup_1icon
 #define NO_gtk_1icon_1theme_1lookup_1by_1gicon__JJIIII
 
-// GtkScrollWindow
-#define NO_gtk_1scrolled_1window_1set_1has_1frame
-#define NO_gtk_1scrolled_1window_1get_1has_1frame
-#define NO_gtk_1scrolled_1window_1set_1child
-
 // GtkTreeViewColumn
 #define NO_gtk_1tree_1view_1column_1cell_1get_1size__J_3I_3I_3I_3I
 
@@ -588,9 +554,6 @@
 #define NO_swt_1fixed_1add
 #define NO_swt_1fixed_1remove
 
-// GtkScrolledWindow signature change
-#define NO_gtk_1scrolled_1window_1new__
-
 // GtkShortcut and related functions
 #define NO_gtk_1shortcut_1controller_1add_1shortcut
 #define NO_gtk_1shortcut_1controller_1remove_1shortcut
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 51fe9d0..65f4660 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
@@ -363,12 +363,6 @@
 	"gtk_1check_1menu_1item_1new",
 	"gtk_1check_1menu_1item_1set_1active",
 	"gtk_1check_1version",
-	"gtk_1clipboard_1clear",
-	"gtk_1clipboard_1get",
-	"gtk_1clipboard_1set_1can_1store",
-	"gtk_1clipboard_1set_1with_1owner",
-	"gtk_1clipboard_1store",
-	"gtk_1clipboard_1wait_1for_1contents",
 	"gtk_1color_1chooser_1add_1palette",
 	"gtk_1color_1chooser_1dialog_1new",
 	"gtk_1color_1chooser_1get_1rgba",
@@ -554,7 +548,6 @@
 	"gtk_1message_1dialog_1format_1secondary_1text",
 	"gtk_1message_1dialog_1new",
 	"gtk_1named_1action_1new",
-	"gtk_1native_1dialog_1run",
 	"gtk_1native_1dialog_1show",
 	"gtk_1native_1get_1surface",
 	"gtk_1notebook_1get_1current_1page",
@@ -646,8 +639,6 @@
 	"gtk_1progress_1bar_1pulse",
 	"gtk_1progress_1bar_1set_1fraction",
 	"gtk_1progress_1bar_1set_1inverted",
-	"gtk_1radio_1button_1get_1group",
-	"gtk_1radio_1button_1new",
 	"gtk_1radio_1menu_1item_1get_1group",
 	"gtk_1radio_1menu_1item_1new",
 	"gtk_1range_1get_1adjustment",
@@ -668,20 +659,13 @@
 	"gtk_1scrollbar_1get_1adjustment",
 	"gtk_1scrollbar_1new",
 	"gtk_1scrolled_1window_1get_1hadjustment",
-	"gtk_1scrolled_1window_1get_1has_1frame",
 	"gtk_1scrolled_1window_1get_1hscrollbar",
 	"gtk_1scrolled_1window_1get_1overlay_1scrolling",
 	"gtk_1scrolled_1window_1get_1policy",
-	"gtk_1scrolled_1window_1get_1shadow_1type",
 	"gtk_1scrolled_1window_1get_1vadjustment",
 	"gtk_1scrolled_1window_1get_1vscrollbar",
-	"gtk_1scrolled_1window_1new__",
-	"gtk_1scrolled_1window_1new__JJ",
-	"gtk_1scrolled_1window_1set_1child",
 	"gtk_1scrolled_1window_1set_1hadjustment",
-	"gtk_1scrolled_1window_1set_1has_1frame",
 	"gtk_1scrolled_1window_1set_1policy",
-	"gtk_1scrolled_1window_1set_1shadow_1type",
 	"gtk_1scrolled_1window_1set_1vadjustment",
 	"gtk_1search_1entry_1new",
 	"gtk_1selection_1data_1free",
@@ -715,12 +699,7 @@
 	"gtk_1spin_1button_1set_1wrap",
 	"gtk_1spin_1button_1update",
 	"gtk_1status_1icon_1get_1geometry",
-	"gtk_1status_1icon_1get_1visible",
-	"gtk_1status_1icon_1new",
 	"gtk_1status_1icon_1position_1menu_1func",
-	"gtk_1status_1icon_1set_1from_1pixbuf",
-	"gtk_1status_1icon_1set_1tooltip_1text",
-	"gtk_1status_1icon_1set_1visible",
 	"gtk_1style_1context_1add_1class",
 	"gtk_1style_1context_1add_1provider",
 	"gtk_1style_1context_1add_1provider_1for_1display",
@@ -741,8 +720,6 @@
 	"gtk_1style_1context_1restore",
 	"gtk_1style_1context_1save",
 	"gtk_1style_1context_1set_1state",
-	"gtk_1target_1list_1new",
-	"gtk_1target_1list_1unref",
 	"gtk_1text_1buffer_1copy_1clipboard",
 	"gtk_1text_1buffer_1create_1mark",
 	"gtk_1text_1buffer_1cut_1clipboard",
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 3c7f9eb..3b81c6d 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
@@ -361,12 +361,6 @@
 	gtk_1check_1menu_1item_1new_FUNC,
 	gtk_1check_1menu_1item_1set_1active_FUNC,
 	gtk_1check_1version_FUNC,
-	gtk_1clipboard_1clear_FUNC,
-	gtk_1clipboard_1get_FUNC,
-	gtk_1clipboard_1set_1can_1store_FUNC,
-	gtk_1clipboard_1set_1with_1owner_FUNC,
-	gtk_1clipboard_1store_FUNC,
-	gtk_1clipboard_1wait_1for_1contents_FUNC,
 	gtk_1color_1chooser_1add_1palette_FUNC,
 	gtk_1color_1chooser_1dialog_1new_FUNC,
 	gtk_1color_1chooser_1get_1rgba_FUNC,
@@ -552,7 +546,6 @@
 	gtk_1message_1dialog_1format_1secondary_1text_FUNC,
 	gtk_1message_1dialog_1new_FUNC,
 	gtk_1named_1action_1new_FUNC,
-	gtk_1native_1dialog_1run_FUNC,
 	gtk_1native_1dialog_1show_FUNC,
 	gtk_1native_1get_1surface_FUNC,
 	gtk_1notebook_1get_1current_1page_FUNC,
@@ -644,8 +637,6 @@
 	gtk_1progress_1bar_1pulse_FUNC,
 	gtk_1progress_1bar_1set_1fraction_FUNC,
 	gtk_1progress_1bar_1set_1inverted_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_1range_1get_1adjustment_FUNC,
@@ -666,20 +657,13 @@
 	gtk_1scrollbar_1get_1adjustment_FUNC,
 	gtk_1scrollbar_1new_FUNC,
 	gtk_1scrolled_1window_1get_1hadjustment_FUNC,
-	gtk_1scrolled_1window_1get_1has_1frame_FUNC,
 	gtk_1scrolled_1window_1get_1hscrollbar_FUNC,
 	gtk_1scrolled_1window_1get_1overlay_1scrolling_FUNC,
 	gtk_1scrolled_1window_1get_1policy_FUNC,
-	gtk_1scrolled_1window_1get_1shadow_1type_FUNC,
 	gtk_1scrolled_1window_1get_1vadjustment_FUNC,
 	gtk_1scrolled_1window_1get_1vscrollbar_FUNC,
-	gtk_1scrolled_1window_1new___FUNC,
-	gtk_1scrolled_1window_1new__JJ_FUNC,
-	gtk_1scrolled_1window_1set_1child_FUNC,
 	gtk_1scrolled_1window_1set_1hadjustment_FUNC,
-	gtk_1scrolled_1window_1set_1has_1frame_FUNC,
 	gtk_1scrolled_1window_1set_1policy_FUNC,
-	gtk_1scrolled_1window_1set_1shadow_1type_FUNC,
 	gtk_1scrolled_1window_1set_1vadjustment_FUNC,
 	gtk_1search_1entry_1new_FUNC,
 	gtk_1selection_1data_1free_FUNC,
@@ -713,12 +697,7 @@
 	gtk_1spin_1button_1set_1wrap_FUNC,
 	gtk_1spin_1button_1update_FUNC,
 	gtk_1status_1icon_1get_1geometry_FUNC,
-	gtk_1status_1icon_1get_1visible_FUNC,
-	gtk_1status_1icon_1new_FUNC,
 	gtk_1status_1icon_1position_1menu_1func_FUNC,
-	gtk_1status_1icon_1set_1from_1pixbuf_FUNC,
-	gtk_1status_1icon_1set_1tooltip_1text_FUNC,
-	gtk_1status_1icon_1set_1visible_FUNC,
 	gtk_1style_1context_1add_1class_FUNC,
 	gtk_1style_1context_1add_1provider_FUNC,
 	gtk_1style_1context_1add_1provider_1for_1display_FUNC,
@@ -739,8 +718,6 @@
 	gtk_1style_1context_1restore_FUNC,
 	gtk_1style_1context_1save_FUNC,
 	gtk_1style_1context_1set_1state_FUNC,
-	gtk_1target_1list_1new_FUNC,
-	gtk_1target_1list_1unref_FUNC,
 	gtk_1text_1buffer_1copy_1clipboard_FUNC,
 	gtk_1text_1buffer_1create_1mark_FUNC,
 	gtk_1text_1buffer_1cut_1clipboard_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
index ee07ace..4f341c0 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
@@ -443,41 +443,6 @@
 
 
 	public static final native long gtk_check_version(int required_major, int required_minor, int required_micro);
-	/** @param clipboard cast=(GtkClipboard *) */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_clipboard_clear(long clipboard);
-	/** @param selection cast=(GdkAtom) */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native long gtk_clipboard_get(long selection);
-	/**
-	 * @param clipboard cast=(GtkClipboard *)
-	 * @param target cast=(const GtkTargetEntry *)
-	 * @param n_targets cast=(guint)
-	 * @param get_func cast=(GtkClipboardGetFunc)
-	 * @param clear_func cast=(GtkClipboardClearFunc)
-	 * @param user_data cast=(GObject *)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native boolean gtk_clipboard_set_with_owner(long clipboard, long target, int n_targets, long get_func, long clear_func, long user_data);
-	/**
-	 * @param clipboard cast=(GtkClipboard *)
-	 * @param targets cast=(const GtkTargetEntry *)
-	 * @param n_targets cast=(gint)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_clipboard_set_can_store(long clipboard, long targets, int n_targets);
-	/**
-	 * @param clipboard cast=(GtkClipboard *)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_clipboard_store(long clipboard);
-	/**
-	 * @param clipboard cast=(GtkClipboard *)
-	 * @param target cast=(GdkAtom)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native long gtk_clipboard_wait_for_contents(long clipboard, long target);
-
 	/* GtkColorChooser Interface */
 	/**
 	 * @param chooser cast=(GtkColorChooser *)
@@ -1507,11 +1472,6 @@
 	/** @param dialog cast=(GtkNativeDialog *) */
 	public static final native void gtk_native_dialog_show(long dialog);
 
-	/* GtkNativeDialog [GTK3 only] */
-	/** @param dialog cast=(GtkNativeDialog *) */
-	public static final native int gtk_native_dialog_run(long dialog);
-
-
 	/* GtkNotebook */
 	public static final native long gtk_notebook_new();
 	/** @param notebook cast=(GtkNotebook *) */
@@ -1910,19 +1870,6 @@
 	public static final native void gtk_progress_bar_set_inverted(long pbar, boolean inverted);
 
 
-	/* GtkRadioButton [GTK3 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param radio_button cast=(GtkRadioButton *)
-	 */
-	public static final native long gtk_radio_button_get_group(long radio_button);
-	/**
-	 * @method flags=dynamic
-	 * @param group cast=(GSList *)
-	 */
-	public static final native long gtk_radio_button_new(long group);
-
-
 	/* GtkRange */
 	/** @param range cast=(GtkRange *) */
 	public static final native long gtk_range_get_adjustment(long range);
@@ -1997,32 +1944,6 @@
 	 *  */
 	public static final native void gtk_scrolled_window_set_hadjustment(long scrolled_window, long adjustment);
 
-	/* GtkScrolledWindow [GTK3 only, if-def'd in os.h] */
-	/**
-	 * @param hadjustment cast=(GtkAdjustment *)
-	 * @param vadjustment cast=(GtkAdjustment *)
-	 */
-	public static final native long gtk_scrolled_window_new(long hadjustment, long vadjustment);
-	/**
-	 * @param scrolled_window cast=(GtkScrolledWindow *)
-	 * @param type cast=(GtkShadowType)
-	 */
-	public static final native void gtk_scrolled_window_set_shadow_type(long scrolled_window, int type);
-	/** @param scrolled_window cast=(GtkScrolledWindow *) */
-	public static final native int gtk_scrolled_window_get_shadow_type(long scrolled_window);
-
-	/* GtkScrolledWindow [GTK4 only, if-def'd in os.h] */
-	public static final native long gtk_scrolled_window_new();
-	/** @param scrolled_window cast=(GtkScrolledWindow *) */
-	public static final native void gtk_scrolled_window_set_has_frame(long scrolled_window, boolean has_frame);
-	/** @param scrolled_window cast=(GtkScrolledWindow *) */
-	public static final native boolean gtk_scrolled_window_get_has_frame(long scrolled_window);
-	/**
-	 * @param scrolled_window cast=(GtkScrolledWindow *)
-	 * @param child cast=(GtkWidget *)
-	 *  */
-	public static final native void gtk_scrolled_window_set_child(long scrolled_window, long child);
-
 
 	public static final native long gtk_settings_get_default();
 	/** @param selection_data cast=(GtkSelectionData *) */
@@ -2100,38 +2021,6 @@
 	/* [GTK3 only, if-def'd in os.h] */
 	public static final native boolean gtk_status_icon_get_geometry(long handle, long screen, GdkRectangle area, long orientation);
 	/**
-	 * @method flags=ignore_deprecations
-	 * @param handle cast=(GtkStatusIcon*)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native boolean gtk_status_icon_get_visible(long handle);
-	/**
-	 * @method flags=ignore_deprecations
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native long gtk_status_icon_new();
-	/**
-	 * @method flags=ignore_deprecations
-	 * @param handle cast=(GtkStatusIcon*)
-	 * @param pixbuf cast=(GdkPixbuf*)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_status_icon_set_from_pixbuf(long handle, long pixbuf);
-	/**
-	 * @method flags=ignore_deprecations
-	 * @param handle cast=(GtkStatusIcon*)
-	 * @param visible cast=(gboolean)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_status_icon_set_visible(long handle, boolean visible);
-	/**
-	 * @method flags=ignore_deprecations
-	 * @param handle cast=(GtkStatusIcon *)
-	 * @param tip_text cast=(const gchar *)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_status_icon_set_tooltip_text(long handle, byte[] tip_text);
-	/**
 	 * @param context cast=(GtkStyleContext *)
 	 * @param class_name cast=(const gchar *)
 	 */
@@ -2230,15 +2119,6 @@
 	 */
 	public static final native void gtk_style_context_set_state(long context, long flags);
 	/**
-	 * @param targets cast=(const GtkTargetEntry *)
-	 * @param ntargets cast=(guint)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native long gtk_target_list_new(long targets, int ntargets);
-	/** @param list cast=(GtkTargetList *) */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_target_list_unref(long list);
-	/**
 	 * @method flags=dynamic
 	 * @param buffer cast=(GtkTextBuffer *)
 	 */
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 22e67a0..9d697ee 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
@@ -286,4 +286,92 @@
 	 * @param extra_widget cast=(GtkWidget *)
 	 */
 	public static final native void gtk_file_chooser_set_extra_widget(long chooser, long extra_widget);
+
+	/* GtkRadioButton */
+	/** @param radio_button cast=(GtkRadioButton *) */
+	public static final native long gtk_radio_button_get_group(long radio_button);
+	/** @param group cast=(GSList *) */
+	public static final native long gtk_radio_button_new(long group);
+
+	/* GtkNativeDialog */
+	/** @param dialog cast=(GtkNativeDialog *) */
+	public static final native int gtk_native_dialog_run(long dialog);
+
+	/* GtkScrolledWindow */
+	/**
+	 * @param hadjustment cast=(GtkAdjustment *)
+	 * @param vadjustment cast=(GtkAdjustment *)
+	 */
+	public static final native long gtk_scrolled_window_new(long hadjustment, long vadjustment);
+	/**
+	 * @param scrolled_window cast=(GtkScrolledWindow *)
+	 * @param type cast=(GtkShadowType)
+	 */
+	public static final native void gtk_scrolled_window_set_shadow_type(long scrolled_window, int type);
+	/** @param scrolled_window cast=(GtkScrolledWindow *) */
+	public static final native int gtk_scrolled_window_get_shadow_type(long scrolled_window);
+
+	/* GtkClipboard */
+	/** @param clipboard cast=(GtkClipboard *) */
+	public static final native void gtk_clipboard_clear(long clipboard);
+	/** @param selection cast=(GdkAtom) */
+	public static final native long gtk_clipboard_get(long selection);
+	/**
+	 * @param clipboard cast=(GtkClipboard *)
+	 * @param target cast=(const GtkTargetEntry *)
+	 * @param n_targets cast=(guint)
+	 * @param get_func cast=(GtkClipboardGetFunc)
+	 * @param clear_func cast=(GtkClipboardClearFunc)
+	 * @param user_data cast=(GObject *)
+	 */
+	public static final native boolean gtk_clipboard_set_with_owner(long clipboard, long target, int n_targets, long get_func, long clear_func, long user_data);
+	/**
+	 * @param clipboard cast=(GtkClipboard *)
+	 * @param targets cast=(const GtkTargetEntry *)
+	 * @param n_targets cast=(gint)
+	 */
+	public static final native void gtk_clipboard_set_can_store(long clipboard, long targets, int n_targets);
+	/** @param clipboard cast=(GtkClipboard *) */
+	public static final native void gtk_clipboard_store(long clipboard);
+	/**
+	 * @param clipboard cast=(GtkClipboard *)
+	 * @param target cast=(GdkAtom)
+	 */
+	public static final native long gtk_clipboard_wait_for_contents(long clipboard, long target);
+
+	/* GtkStatusIcon */
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param handle cast=(GtkStatusIcon*)
+	 */
+	public static final native boolean gtk_status_icon_get_visible(long handle);
+	/** @method flags=ignore_deprecations */
+	public static final native long gtk_status_icon_new();
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param handle cast=(GtkStatusIcon*)
+	 * @param pixbuf cast=(GdkPixbuf*)
+	 */
+	public static final native void gtk_status_icon_set_from_pixbuf(long handle, long pixbuf);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param handle cast=(GtkStatusIcon*)
+	 * @param visible cast=(gboolean)
+	 */
+	public static final native void gtk_status_icon_set_visible(long handle, boolean visible);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param handle cast=(GtkStatusIcon *)
+	 * @param tip_text cast=(const gchar *)
+	 */
+	public static final native void gtk_status_icon_set_tooltip_text(long handle, byte[] tip_text);
+
+	/* GtkTargetList */
+	/**
+	 * @param targets cast=(const GtkTargetEntry *)
+	 * @param ntargets cast=(guint)
+	 */
+	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);
 }
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 77cab8c..17a8bb0 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
@@ -181,4 +181,16 @@
 	 * @param error cast=(GError **)
 	 */
 	public static final native boolean gtk_file_chooser_set_file(long chooser, long file, long error);
+
+	/* GtkScrolledWindow */
+	public static final native long gtk_scrolled_window_new();
+	/** @param scrolled_window cast=(GtkScrolledWindow *) */
+	public static final native void gtk_scrolled_window_set_has_frame(long scrolled_window, boolean has_frame);
+	/** @param scrolled_window cast=(GtkScrolledWindow *) */
+	public static final native boolean gtk_scrolled_window_get_has_frame(long scrolled_window);
+	/**
+	 * @param scrolled_window cast=(GtkScrolledWindow *)
+	 * @param child cast=(GtkWidget *)
+	 */
+	public static final native void gtk_scrolled_window_set_child(long scrolled_window, long child);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index 3971e55..7667f64 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
@@ -360,10 +360,10 @@
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 				GTK4.gtk_check_button_set_group(handle, groupHandle);
 			} else {
-				groupHandle = GTK.gtk_radio_button_new (0);
+				groupHandle = GTK3.gtk_radio_button_new (0);
 				if (groupHandle == 0) error (SWT.ERROR_NO_HANDLES);
 				OS.g_object_ref_sink (groupHandle);
-				handle = GTK.gtk_radio_button_new (GTK.gtk_radio_button_get_group (groupHandle));
+				handle = GTK3.gtk_radio_button_new (GTK3.gtk_radio_button_get_group (groupHandle));
 				if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 			}
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
index a52d148..2cbaac8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
@@ -22,6 +22,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 are controls which are capable
@@ -326,13 +327,13 @@
 		if (hadj == 0) error (SWT.ERROR_NO_HANDLES);
 
 		if (GTK.GTK4) {
-			scrolledHandle = GTK.gtk_scrolled_window_new();
+			scrolledHandle = GTK4.gtk_scrolled_window_new();
 			GTK.gtk_scrolled_window_set_hadjustment(scrolledHandle, hadj);
 			GTK.gtk_scrolled_window_set_vadjustment(scrolledHandle, vadj);
 			GTK.gtk_widget_set_hexpand(scrolledHandle, true);
 			GTK.gtk_widget_set_vexpand(scrolledHandle, true);
 		} else {
-			scrolledHandle = GTK.gtk_scrolled_window_new (hadj, vadj);
+			scrolledHandle = GTK3.gtk_scrolled_window_new (hadj, vadj);
 		}
 		if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	}
@@ -360,7 +361,7 @@
 			}
 		}
 		if (GTK.GTK4) {
-			GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+			GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 		} else {
 			/*
 			* Force the scrolledWindow to have a single child that is
@@ -378,9 +379,9 @@
 		GTK.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp);
 		if (hasBorder ()) {
 			if (GTK.GTK4) {
-				GTK.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
+				GTK4.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
 			} else {
-				GTK.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
+				GTK3.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
 			}
 		}
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
index 2e6456e..15a46eb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
@@ -183,7 +183,7 @@
 	} else {
 		display.externalEventLoop = true;
 		display.sendPreExternalEventDispatchEvent ();
-		response = GTK.gtk_native_dialog_run (handle);
+		response = GTK3.gtk_native_dialog_run (handle);
 		display.externalEventLoop = false;
 		display.sendPostExternalEventDispatchEvent ();
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
index 2b2953f..b362dcf 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandBar.java
@@ -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 support the layout of selectable
@@ -144,16 +145,16 @@
 
 	if ((style & SWT.V_SCROLL) != 0) {
 		if (GTK.GTK4) {
-			scrolledHandle = GTK.gtk_scrolled_window_new();
+			scrolledHandle = GTK4.gtk_scrolled_window_new();
 		} else {
-			scrolledHandle = GTK.gtk_scrolled_window_new (0, 0);
+			scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 		}
 		if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 		GTK.gtk_scrolled_window_set_policy (scrolledHandle, GTK.GTK_POLICY_NEVER, GTK.GTK_POLICY_AUTOMATIC);
 
 		if (GTK.GTK4) {
 			OS.swt_fixed_add(fixedHandle, scrolledHandle);
-			GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+			GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 		} else {
 			GTK3.gtk_container_add (fixedHandle, scrolledHandle);
 			GTK3.gtk_container_add(scrolledHandle, handle);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java
index 6f40ee3..ff397b6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/FileDialog.java
@@ -366,7 +366,7 @@
 	} else {
 		display.externalEventLoop = true;
 		display.sendPreExternalEventDispatchEvent ();
-		response = GTK.gtk_native_dialog_run(handle);
+		response = GTK3.gtk_native_dialog_run(handle);
 		display.externalEventLoop = false;
 		display.sendPostExternalEventDispatchEvent ();
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
index e912767..6ad1c43 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java
@@ -20,6 +20,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 represent a selectable user interface
@@ -205,10 +206,10 @@
 	if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
 
 	if (GTK.GTK4) {
-		scrolledHandle = GTK.gtk_scrolled_window_new();
+		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
 		GTK.gtk_widget_set_has_window(fixedHandle, true);
-		scrolledHandle = GTK.gtk_scrolled_window_new (0, 0);
+		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	/*
@@ -231,7 +232,7 @@
 
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, scrolledHandle);
-		GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+		GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 	} else {
 		GTK3.gtk_container_add (fixedHandle, scrolledHandle);
 		GTK3.gtk_container_add (scrolledHandle, handle);
@@ -246,9 +247,9 @@
 	GTK.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp);
 	if ((style & SWT.BORDER) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
+			GTK4.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
 		} else {
-			GTK.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
+			GTK3.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
 		}
 	}
 	/*
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
index 0d65dc3..d3163b6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Scrollable.java
@@ -18,6 +18,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.*;
 
 /**
  * This class is the abstract superclass of all classes which
@@ -130,9 +132,9 @@
 	if (scrolledHandle != 0) {
 		boolean hasFrame;
 		if (GTK.GTK4) {
-			hasFrame = GTK.gtk_scrolled_window_get_has_frame(scrolledHandle);
+			hasFrame = GTK4.gtk_scrolled_window_get_has_frame(scrolledHandle);
 		} else {
-			hasFrame = GTK.gtk_scrolled_window_get_shadow_type (scrolledHandle) != GTK.GTK_SHADOW_NONE;
+			hasFrame = GTK3.gtk_scrolled_window_get_shadow_type (scrolledHandle) != GTK.GTK_SHADOW_NONE;
 		}
 
 		if (hasFrame) {
@@ -218,9 +220,9 @@
 
 		boolean hasFrame;
 		if (GTK.GTK4) {
-			hasFrame = GTK.gtk_scrolled_window_get_has_frame(scrolledHandle);
+			hasFrame = GTK4.gtk_scrolled_window_get_has_frame(scrolledHandle);
 		} else {
-			hasFrame = GTK.gtk_scrolled_window_get_shadow_type (scrolledHandle) != GTK.GTK_SHADOW_NONE;
+			hasFrame = GTK3.gtk_scrolled_window_get_shadow_type (scrolledHandle) != GTK.GTK_SHADOW_NONE;
 		}
 		if (hasFrame) {
 			border += getThickness (scrolledHandle).x;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
index 1d3003e..f427288 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java
@@ -646,10 +646,10 @@
 	fixedHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 	if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	if (GTK.GTK4) {
-		scrolledHandle = GTK.gtk_scrolled_window_new();
+		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
 		GTK.gtk_widget_set_has_window(fixedHandle, true);
-		scrolledHandle = GTK.gtk_scrolled_window_new (0, 0);
+		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	long [] types = getColumnTypes (1);
@@ -665,7 +665,7 @@
 	createColumn (null, 0);
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, scrolledHandle);
-		GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+		GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 	} else {
 		GTK3.gtk_container_add(fixedHandle, scrolledHandle);
 		GTK3.gtk_container_add(scrolledHandle, handle);
@@ -680,9 +680,9 @@
 	GTK.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp);
 	if ((style & SWT.BORDER) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
+			GTK4.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
 		} else {
-			GTK.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
+			GTK3.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
 		}
 	}
 	/*
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
index a449226..d4a7f0d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
@@ -265,9 +265,9 @@
 		}
 	} else {
 		if (GTK.GTK4) {
-			scrolledHandle = GTK.gtk_scrolled_window_new();
+			scrolledHandle = GTK4.gtk_scrolled_window_new();
 		} else {
-			scrolledHandle = GTK.gtk_scrolled_window_new (0, 0);
+			scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 		}
 		if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 		handle = GTK.gtk_text_view_new ();
@@ -277,7 +277,7 @@
 
 		if (GTK.GTK4) {
 			OS.swt_fixed_add(fixedHandle, scrolledHandle);
-			GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+			GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 		} else {
 			GTK3.gtk_container_add (fixedHandle, scrolledHandle);
 			GTK3.gtk_container_add (scrolledHandle, handle);
@@ -290,9 +290,9 @@
 		GTK.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp);
 		if ((style & SWT.BORDER) != 0) {
 			if (GTK.GTK4) {
-				GTK.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
+				GTK4.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
 			} else {
-				GTK.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
+				GTK3.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
 			}
 		}
 		int just = GTK.GTK_JUSTIFY_LEFT;
@@ -736,7 +736,7 @@
 			GTK.gtk_editable_copy_clipboard(handle);
 		}
 	} else {
-		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK.gtk_clipboard_get (GDK.GDK_NONE);
+		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
 		clearSegments (true);
 		GTK.gtk_text_buffer_copy_clipboard (bufferHandle, clipboard);
 		applySegments ();
@@ -764,7 +764,7 @@
 			GTK.gtk_editable_cut_clipboard(handle);
 		}
 	} else {
-		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK.gtk_clipboard_get (GDK.GDK_NONE);
+		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
 		clearSegments (true);
 		GTK.gtk_text_buffer_cut_clipboard (bufferHandle, clipboard, GTK.gtk_text_view_get_editable (handle));
 		applySegments ();
@@ -2096,7 +2096,7 @@
 			GTK.gtk_editable_paste_clipboard (handle);
 		}
 	} else {
-		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK.gtk_clipboard_get (GDK.GDK_NONE);
+		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
 		clearSegments (true);
 		GTK.gtk_text_buffer_paste_clipboard (bufferHandle, clipboard, null, GTK.gtk_text_view_get_editable (handle));
 		applySegments ();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
index 1a3f083..a2fd985 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TrayItem.java
@@ -158,10 +158,10 @@
 @Override
 void createHandle (int index) {
 	state |= HANDLE;
-	handle = GTK.gtk_status_icon_new ();
+	handle = GTK3.gtk_status_icon_new ();
 	if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 	imageHandle = GTK.gtk_image_new ();
-	GTK.gtk_status_icon_set_visible (handle,true);
+	GTK3.gtk_status_icon_set_visible (handle,true);
 }
 
 @Override
@@ -353,7 +353,7 @@
  */
 public boolean getVisible () {
 	checkWidget ();
-	return GTK.gtk_status_icon_get_visible (handle);
+	return GTK3.gtk_status_icon_get_visible (handle);
 }
 
 @Override
@@ -482,12 +482,12 @@
 			imageList.put (imageIndex, image);
 		}
 		long pixbuf = ImageList.createPixbuf(image);
-		GTK.gtk_status_icon_set_from_pixbuf (handle, pixbuf);
-		GTK.gtk_status_icon_set_visible (handle, true);
+		GTK3.gtk_status_icon_set_from_pixbuf (handle, pixbuf);
+		GTK3.gtk_status_icon_set_visible (handle, true);
 	} else {
 		GTK.gtk_widget_set_size_request (handle, 1, 1);
-		GTK.gtk_status_icon_set_from_pixbuf (handle, 0);
-		GTK.gtk_status_icon_set_visible (handle, false);
+		GTK3.gtk_status_icon_set_from_pixbuf (handle, 0);
+		GTK3.gtk_status_icon_set_visible (handle, false);
 	}
 }
 
@@ -544,7 +544,7 @@
 	if (string != null && string.length () > 0) {
 		buffer = Converter.wcsToMbcs (string, true);
 	}
-	GTK.gtk_status_icon_set_tooltip_text (handle, buffer);
+	GTK3.gtk_status_icon_set_tooltip_text (handle, buffer);
 }
 
 /**
@@ -560,7 +560,7 @@
  */
 public void setVisible (boolean visible) {
 	checkWidget ();
-	if(GTK.gtk_status_icon_get_visible (handle) == visible) return;
+	if(GTK3.gtk_status_icon_get_visible (handle) == visible) return;
 	if (visible) {
 		/*
 		* It is possible (but unlikely), that application
@@ -569,9 +569,9 @@
 		*/
 		sendEvent (SWT.Show);
 		if (isDisposed ()) return;
-		GTK.gtk_status_icon_set_visible (handle, visible);
+		GTK3.gtk_status_icon_set_visible (handle, visible);
 	} else {
-		GTK.gtk_status_icon_set_visible (handle, visible);
+		GTK3.gtk_status_icon_set_visible (handle, visible);
 		sendEvent (SWT.Hide);
 	}
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
index 09f7439..eb9a18f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java
@@ -807,10 +807,10 @@
 	fixedHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 	if (fixedHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	if (GTK.GTK4) {
-		scrolledHandle = GTK.gtk_scrolled_window_new();
+		scrolledHandle = GTK4.gtk_scrolled_window_new();
 	} else {
 		GTK.gtk_widget_set_has_window(fixedHandle, true);
-		scrolledHandle = GTK.gtk_scrolled_window_new (0, 0);
+		scrolledHandle = GTK3.gtk_scrolled_window_new (0, 0);
 	}
 	if (scrolledHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	long [] types = getColumnTypes (1);
@@ -827,7 +827,7 @@
 
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, scrolledHandle);
-		GTK.gtk_scrolled_window_set_child(scrolledHandle, handle);
+		GTK4.gtk_scrolled_window_set_child(scrolledHandle, handle);
 	} else {
 		GTK3.gtk_container_add (fixedHandle, scrolledHandle);
 		GTK3.gtk_container_add (scrolledHandle, handle);
@@ -842,9 +842,9 @@
 	GTK.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp);
 	if ((style & SWT.BORDER) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
+			GTK4.gtk_scrolled_window_set_has_frame(scrolledHandle, true);
 		} else {
-			GTK.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
+			GTK3.gtk_scrolled_window_set_shadow_type (scrolledHandle, GTK.GTK_SHADOW_ETCHED_IN);
 		}
 	}
 	/*