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 f8c621e..eb5fc32 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
@@ -1006,6 +1006,26 @@
 }
 #endif
 
+#ifndef NO_gtk_1label_1set_1line_1wrap
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1label_1set_1line_1wrap)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_FUNC);
+	gtk_label_set_line_wrap((GtkLabel *)arg0, (gboolean)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1label_1set_1line_1wrap_1mode
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1label_1set_1line_1wrap_1mode)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
+	gtk_label_set_line_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1main_1do_1event
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1main_1do_1event)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -1096,6 +1116,28 @@
 }
 #endif
 
+#ifndef NO_gtk_1menu_1popup
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1popup)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jlong arg3, jlong arg4, jint arg5, jint arg6)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1popup_FUNC);
+	gtk_menu_popup((GtkMenu *)arg0, (GtkWidget *)arg1, (GtkWidget *)arg2, (GtkMenuPositionFunc)arg3, (gpointer)arg4, (guint)arg5, (guint32)arg6);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1popup_FUNC);
+}
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
+
+#ifndef NO_gtk_1menu_1popup_1at_1pointer
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1popup_1at_1pointer)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1menu_1popup_1at_1pointer_FUNC);
+	gtk_menu_popup_at_pointer((GtkMenu *)arg0, (const GdkEvent*)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1menu_1popup_1at_1pointer_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1menu_1shell_1deactivate
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1menu_1shell_1deactivate)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -1438,6 +1480,16 @@
 G_GNUC_END_IGNORE_DEPRECATIONS
 #endif
 
+#ifndef NO_gtk_1style_1context_1add_1provider_1for_1screen
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1style_1context_1add_1provider_1for_1screen)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1style_1context_1add_1provider_1for_1screen_FUNC);
+	gtk_style_context_add_provider_for_screen((GdkScreen *)arg0, (GtkStyleProvider *)arg1, (guint)arg2);
+	GTK3_NATIVE_EXIT(env, that, gtk_1style_1context_1add_1provider_1for_1screen_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1style_1context_1invalidate
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1style_1context_1invalidate)
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 6a0227c..1903f3f 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
@@ -104,6 +104,8 @@
 	"gtk_1image_1set_1from_1icon_1name",
 	"gtk_1image_1set_1from_1surface",
 	"gtk_1init_1check",
+	"gtk_1label_1set_1line_1wrap",
+	"gtk_1label_1set_1line_1wrap_1mode",
 	"gtk_1main_1do_1event",
 	"gtk_1main_1iteration_1do",
 	"gtk_1menu_1bar_1new",
@@ -112,6 +114,8 @@
 	"gtk_1menu_1item_1set_1submenu",
 	"gtk_1menu_1new",
 	"gtk_1menu_1popdown",
+	"gtk_1menu_1popup",
+	"gtk_1menu_1popup_1at_1pointer",
 	"gtk_1menu_1shell_1deactivate",
 	"gtk_1menu_1shell_1insert",
 	"gtk_1menu_1shell_1set_1take_1focus",
@@ -140,6 +144,7 @@
 	"gtk_1status_1icon_1set_1from_1pixbuf",
 	"gtk_1status_1icon_1set_1tooltip_1text",
 	"gtk_1status_1icon_1set_1visible",
+	"gtk_1style_1context_1add_1provider_1for_1screen",
 	"gtk_1style_1context_1invalidate",
 	"gtk_1target_1list_1new",
 	"gtk_1target_1list_1unref",
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 7cc5e94..1583638 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
@@ -114,6 +114,8 @@
 	gtk_1image_1set_1from_1icon_1name_FUNC,
 	gtk_1image_1set_1from_1surface_FUNC,
 	gtk_1init_1check_FUNC,
+	gtk_1label_1set_1line_1wrap_FUNC,
+	gtk_1label_1set_1line_1wrap_1mode_FUNC,
 	gtk_1main_1do_1event_FUNC,
 	gtk_1main_1iteration_1do_FUNC,
 	gtk_1menu_1bar_1new_FUNC,
@@ -122,6 +124,8 @@
 	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_1shell_1deactivate_FUNC,
 	gtk_1menu_1shell_1insert_FUNC,
 	gtk_1menu_1shell_1set_1take_1focus_FUNC,
@@ -150,6 +154,7 @@
 	gtk_1status_1icon_1set_1from_1pixbuf_FUNC,
 	gtk_1status_1icon_1set_1tooltip_1text_FUNC,
 	gtk_1status_1icon_1set_1visible_FUNC,
+	gtk_1style_1context_1add_1provider_1for_1screen_FUNC,
 	gtk_1style_1context_1invalidate_FUNC,
 	gtk_1target_1list_1new_FUNC,
 	gtk_1target_1list_1unref_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c
index a4683ae..bd930fa 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
@@ -639,6 +639,36 @@
 }
 #endif
 
+#ifndef NO_gtk_1label_1set_1wrap
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1label_1set_1wrap)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_FUNC);
+	gtk_label_set_wrap((GtkLabel *)arg0, (gboolean)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1label_1set_1wrap_1mode
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1label_1set_1wrap_1mode)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
+	gtk_label_set_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1menu_1button_1set_1use_1underline
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1menu_1button_1set_1use_1underline)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1menu_1button_1set_1use_1underline_FUNC);
+	gtk_menu_button_set_use_underline((GtkMenuButton *)arg0, arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1menu_1button_1set_1use_1underline_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1named_1action_1new
 JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1named_1action_1new)
 	(JNIEnv *env, jclass that, jbyteArray arg0)
@@ -885,6 +915,16 @@
 }
 #endif
 
+#ifndef NO_gtk_1style_1context_1add_1provider_1for_1display
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1style_1context_1add_1provider_1for_1display)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1style_1context_1add_1provider_1for_1display_FUNC);
+	gtk_style_context_add_provider_for_display((GdkDisplay *)arg0, (GtkStyleProvider *)arg1, (guint)arg2);
+	GTK4_NATIVE_EXIT(env, that, gtk_1style_1context_1add_1provider_1for_1display_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1text_1get_1buffer
 JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1text_1get_1buffer)
 	(JNIEnv *env, jclass that, jlong arg0)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4_stats.c
index acaf6b6..207330b 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
@@ -74,6 +74,9 @@
 	"gtk_1image_1set_1from_1paintable",
 	"gtk_1init_1check",
 	"gtk_1keyval_1trigger_1new",
+	"gtk_1label_1set_1wrap",
+	"gtk_1label_1set_1wrap_1mode",
+	"gtk_1menu_1button_1set_1use_1underline",
 	"gtk_1named_1action_1new",
 	"gtk_1native_1get_1surface",
 	"gtk_1picture_1new",
@@ -95,6 +98,7 @@
 	"gtk_1shortcut_1controller_1set_1scope",
 	"gtk_1shortcut_1new",
 	"gtk_1snapshot_1append_1cairo",
+	"gtk_1style_1context_1add_1provider_1for_1display",
 	"gtk_1text_1get_1buffer",
 	"gtk_1widget_1action_1set_1enabled",
 	"gtk_1widget_1activate_1action",
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 a137e2e..0e28978 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
@@ -84,6 +84,9 @@
 	gtk_1image_1set_1from_1paintable_FUNC,
 	gtk_1init_1check_FUNC,
 	gtk_1keyval_1trigger_1new_FUNC,
+	gtk_1label_1set_1wrap_FUNC,
+	gtk_1label_1set_1wrap_1mode_FUNC,
+	gtk_1menu_1button_1set_1use_1underline_FUNC,
 	gtk_1named_1action_1new_FUNC,
 	gtk_1native_1get_1surface_FUNC,
 	gtk_1picture_1new_FUNC,
@@ -105,6 +108,7 @@
 	gtk_1shortcut_1controller_1set_1scope_FUNC,
 	gtk_1shortcut_1new_FUNC,
 	gtk_1snapshot_1append_1cairo_FUNC,
+	gtk_1style_1context_1add_1provider_1for_1display_FUNC,
 	gtk_1text_1get_1buffer_FUNC,
 	gtk_1widget_1action_1set_1enabled_FUNC,
 	gtk_1widget_1activate_1action_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index 8851b4f..79e40aa 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
@@ -5747,42 +5747,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1label_1set_1line_1wrap
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1line_1wrap)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_FUNC);
-/*
-	gtk_label_set_line_wrap((GtkLabel *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_line_wrap)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, gboolean))fp)((GtkLabel *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1label_1set_1line_1wrap_1mode
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1line_1wrap_1mode)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
-/*
-	gtk_label_set_line_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_line_wrap_mode)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, PangoWrapMode))fp)((GtkLabel *)arg0, (PangoWrapMode)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1label_1set_1text__JJ
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1text__JJ)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -5821,42 +5785,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1label_1set_1wrap
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1wrap)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_FUNC);
-/*
-	gtk_label_set_wrap((GtkLabel *)arg0, (gboolean)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_wrap)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, gboolean))fp)((GtkLabel *)arg0, (gboolean)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1label_1set_1wrap_1mode
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1wrap_1mode)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
-/*
-	gtk_label_set_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_wrap_mode)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, PangoWrapMode))fp)((GtkLabel *)arg0, (PangoWrapMode)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1label_1set_1xalign
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1xalign)
 	(JNIEnv *env, jclass that, jlong arg0, jfloat arg1)
@@ -6002,60 +5930,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1menu_1button_1set_1use_1underline
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1button_1set_1use_1underline)
-	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1button_1set_1use_1underline_FUNC);
-/*
-	gtk_menu_button_set_use_underline((GtkMenuButton *)arg0, arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_menu_button_set_use_underline)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkMenuButton *, jboolean))fp)((GtkMenuButton *)arg0, arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1button_1set_1use_1underline_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)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1popup_FUNC);
-/*
-	gtk_menu_popup(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_menu_popup)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(jlong, jlong, jlong, jlong, jlong, jint, jint))fp)(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1popup_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1menu_1popup_1at_1pointer
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1popup_1at_1pointer)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1menu_1popup_1at_1pointer_FUNC);
-/*
-	gtk_menu_popup_at_pointer(arg0, arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_menu_popup_at_pointer)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(jlong, jlong))fp)(arg0, arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1menu_1popup_1at_1pointer_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1menu_1popup_1at_1rect
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1menu_1popup_1at_1rect)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jobject arg2, jint arg3, jint arg4, jlong arg5)
@@ -7641,34 +7515,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1style_1context_1add_1provider_1for_1display
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1style_1context_1add_1provider_1for_1display)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1style_1context_1add_1provider_1for_1display_FUNC);
-/*
-	gtk_style_context_add_provider_for_display((GdkDisplay *)arg0, (GtkStyleProvider *)arg1, (guint)arg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_style_context_add_provider_for_display)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GdkDisplay *, GtkStyleProvider *, guint))fp)((GdkDisplay *)arg0, (GtkStyleProvider *)arg1, (guint)arg2);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1style_1context_1add_1provider_1for_1display_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1style_1context_1add_1provider_1for_1screen
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1style_1context_1add_1provider_1for_1screen)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jint arg2)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1style_1context_1add_1provider_1for_1screen_FUNC);
-	gtk_style_context_add_provider_for_screen((GdkScreen *)arg0, (GtkStyleProvider *)arg1, (guint)arg2);
-	GTK_NATIVE_EXIT(env, that, gtk_1style_1context_1add_1provider_1for_1screen_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1style_1context_1get__JI_3B_3JJ
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1style_1context_1get__JI_3B_3JJ)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jbyteArray arg2, jlongArray arg3, jlong arg4)
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 270eb0a..9ff466d5 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
@@ -219,7 +219,6 @@
 #define NO_gtk_1status_1icon_1position_1menu_1func
 
 // No GdkScreen on GTK4, including parameter casts
-#define NO_gtk_1style_1context_1add_1provider_1for_1screen
 #define NO_gdk_1screen_1get_1default
 #define NO_gdk_1screen_1get_1monitor_1at_1point
 #define NO_gdk_1screen_1get_1monitor_1at_1window
@@ -393,7 +392,6 @@
 #define NO_graphene_1rect_1init
 
 // Miscellaneous functions not present on GTK3
-#define NO_gtk_1style_1context_1add_1provider_1for_1display
 #define NO_gtk_1style_1context_1get_1margin
 
 // GdkCursor API changes from GTK3 -> GTK4
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 23de79f..cc4f71f 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
@@ -462,13 +462,9 @@
 	"gtk_1label_1new_1with_1mnemonic",
 	"gtk_1label_1set_1attributes",
 	"gtk_1label_1set_1justify",
-	"gtk_1label_1set_1line_1wrap",
-	"gtk_1label_1set_1line_1wrap_1mode",
 	"gtk_1label_1set_1text__JJ",
 	"gtk_1label_1set_1text__J_3B",
 	"gtk_1label_1set_1text_1with_1mnemonic",
-	"gtk_1label_1set_1wrap",
-	"gtk_1label_1set_1wrap_1mode",
 	"gtk_1label_1set_1xalign",
 	"gtk_1label_1set_1yalign",
 	"gtk_1list_1store_1append",
@@ -482,9 +478,6 @@
 	"gtk_1list_1store_1set__JJIZI",
 	"gtk_1list_1store_1set__JJI_3BI",
 	"gtk_1menu_1button_1new",
-	"gtk_1menu_1button_1set_1use_1underline",
-	"gtk_1menu_1popup",
-	"gtk_1menu_1popup_1at_1pointer",
 	"gtk_1menu_1popup_1at_1rect",
 	"gtk_1message_1dialog_1format_1secondary_1text",
 	"gtk_1message_1dialog_1new",
@@ -618,8 +611,6 @@
 	"gtk_1status_1icon_1position_1menu_1func",
 	"gtk_1style_1context_1add_1class",
 	"gtk_1style_1context_1add_1provider",
-	"gtk_1style_1context_1add_1provider_1for_1display",
-	"gtk_1style_1context_1add_1provider_1for_1screen",
 	"gtk_1style_1context_1get__JI_3B_3JJ",
 	"gtk_1style_1context_1get__J_3B_3JJ",
 	"gtk_1style_1context_1get_1border__JILorg_eclipse_swt_internal_gtk_GtkBorder_2",
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 ac06375..cb5ac1c 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
@@ -460,13 +460,9 @@
 	gtk_1label_1new_1with_1mnemonic_FUNC,
 	gtk_1label_1set_1attributes_FUNC,
 	gtk_1label_1set_1justify_FUNC,
-	gtk_1label_1set_1line_1wrap_FUNC,
-	gtk_1label_1set_1line_1wrap_1mode_FUNC,
 	gtk_1label_1set_1text__JJ_FUNC,
 	gtk_1label_1set_1text__J_3B_FUNC,
 	gtk_1label_1set_1text_1with_1mnemonic_FUNC,
-	gtk_1label_1set_1wrap_FUNC,
-	gtk_1label_1set_1wrap_1mode_FUNC,
 	gtk_1label_1set_1xalign_FUNC,
 	gtk_1label_1set_1yalign_FUNC,
 	gtk_1list_1store_1append_FUNC,
@@ -480,9 +476,6 @@
 	gtk_1list_1store_1set__JJIZI_FUNC,
 	gtk_1list_1store_1set__JJI_3BI_FUNC,
 	gtk_1menu_1button_1new_FUNC,
-	gtk_1menu_1button_1set_1use_1underline_FUNC,
-	gtk_1menu_1popup_FUNC,
-	gtk_1menu_1popup_1at_1pointer_FUNC,
 	gtk_1menu_1popup_1at_1rect_FUNC,
 	gtk_1message_1dialog_1format_1secondary_1text_FUNC,
 	gtk_1message_1dialog_1new_FUNC,
@@ -616,8 +609,6 @@
 	gtk_1status_1icon_1position_1menu_1func_FUNC,
 	gtk_1style_1context_1add_1class_FUNC,
 	gtk_1style_1context_1add_1provider_FUNC,
-	gtk_1style_1context_1add_1provider_1for_1display_FUNC,
-	gtk_1style_1context_1add_1provider_1for_1screen_FUNC,
 	gtk_1style_1context_1get__JI_3B_3JJ_FUNC,
 	gtk_1style_1context_1get__J_3B_3JJ_FUNC,
 	gtk_1style_1context_1get_1border__JILorg_eclipse_swt_internal_gtk_GtkBorder_2_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 a5f4879..121e55e 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
@@ -421,8 +421,13 @@
 	/* GtkCheckButton */
 	public static final native long gtk_check_button_new();
 
-
+	/* General Gtk Functions */
 	public static final native long gtk_check_version(int required_major, int required_minor, int required_micro);
+	public static final native long gtk_get_default_language();
+	public static final native int gtk_get_major_version();
+	public static final native int gtk_get_minor_version();
+	public static final native int gtk_get_micro_version();
+
 	/* GtkColorChooser Interface */
 	/**
 	 * @param chooser cast=(GtkColorChooser *)
@@ -701,12 +706,13 @@
 	 */
 	public static final native long gtk_file_chooser_native_new(byte[] title, long parent, int action, byte[] accept_label, byte[] cancel_label);
 
+	/* GtkFileFilter */
+	public static final native long gtk_file_filter_new();
 	/**
 	 * @param filter cast=(GtkFileFilter *)
 	 * @param pattern cast=(const gchar *)
 	 */
 	public static final native void gtk_file_filter_add_pattern(long filter, byte[] pattern);
-	public static final native long gtk_file_filter_new();
 	/** @param filter cast=(GtkFileFilter *) */
 	public static final native long gtk_file_filter_get_name(long filter);
 	/**
@@ -714,6 +720,7 @@
 	 * @param name cast=(const gchar *)
 	 */
 	public static final native void gtk_file_filter_set_name(long filter, byte[] name);
+
 	/**
 	 * @method flags=dynamic
 	 */
@@ -762,15 +769,15 @@
 	 */
 	public static final native double gtk_gesture_zoom_get_scale_delta(long gesture);
 
-
+	/* GtkFontChooserDialog */
 	/**
 	 * @param title cast=(const gchar *)
 	 * @param parent cast=(GtkWindow *)
 	 */
 	public static final native long gtk_font_chooser_dialog_new(byte[] title, long parent);
-	/**
-	 * @param fontchooser cast=(GtkFontChooser *)
-	 */
+
+	/* GtkFontChooser Interface */
+	/** @param fontchooser cast=(GtkFontChooser *) */
 	public static final native long gtk_font_chooser_get_font(long fontchooser);
 	/**
 	 * @param fsd cast=(GtkFontChooser *)
@@ -789,9 +796,6 @@
 	 */
 	public static final native void gtk_frame_set_label_widget(long frame, long label_widget);
 
-	/* GTK Initialization */
-	public static final native long gtk_get_default_language();
-
 	/* GtkScale */
 	/**
 	 *  @param orientation cast=(GtkOrientation)
@@ -816,16 +820,18 @@
 	 */
 	public static final native long gtk_scrollbar_new(int orientation, long adjustment);
 
-
+	/* GtkSearchEntry */
 	public static final native long gtk_search_entry_new();
-	/**
-	 * @param orientation cast=(GtkOrientation)
-	 */
+
+	/* GtkSeparator */
+	/** @param orientation cast=(GtkOrientation) */
 	public static final native long gtk_separator_new(int orientation);
+
 	// Get function pointer to gtk_status_icon_position_menu
 	// See os_custom.h
 	public static final native long gtk_status_icon_position_menu_func();
 
+	/* GtkIMContext */
 	/** @param context cast=(GtkIMContext *) */
 	public static final native void gtk_im_context_focus_in(long context);
 	/** @param context cast=(GtkIMContext *) */
@@ -850,6 +856,8 @@
 	 * @param area cast=(GdkRectangle *),flags=no_out
 	 */
 	public static final native void gtk_im_context_set_cursor_location(long context, GdkRectangle area);
+
+	/* GtkIMMulticontext */
 	public static final native long gtk_im_multicontext_new();
 
 	/* GtkImage */
@@ -908,35 +916,7 @@
 	*/
 	public static final native void gtk_label_set_yalign(long label, float yalign);
 
-	/* GtkLabel [GTK3 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param label cast=(GtkLabel *)
-	 * @param wrap cast=(gboolean)
-	 */
-	public static final native void gtk_label_set_line_wrap(long label, boolean wrap);
-	/**
-	 * @method flags=dynamic
-	 * @param label cast=(GtkLabel *)
-	 * @param wrap_mode cast=(PangoWrapMode)
-	 */
-	public static final native void gtk_label_set_line_wrap_mode(long label, int wrap_mode);
-
-	/* GtkLabel [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param label cast=(GtkLabel *)
-	 * @param wrap cast=(gboolean)
-	 */
-	public static final native void gtk_label_set_wrap(long label, boolean wrap);
-	/**
-	 * @method flags=dynamic
-	 * @param label cast=(GtkLabel *)
-	 * @param wrap_mode cast=(PangoWrapMode)
-	 */
-	public static final native void gtk_label_set_wrap_mode(long label, int wrap_mode);
-
-
+	/* GtkListStore */
 	/**
 	 * @param list_store cast=(GtkListStore *)
 	 * @param iter cast=(GtkTreeIter *)
@@ -955,32 +935,6 @@
 	 * @param types cast=(GType *)
 	 */
 	public static final native long gtk_list_store_newv(int numColumns, long [] types);
-	public static final native long gtk_css_provider_new();
-	/**
-	 * @param provider cast=(GtkCssProvider *)
-	 */
-	public static final native long gtk_css_provider_to_string(long provider);
-	/**
-	 * @param screen cast=(GdkScreen *)
-	 * @param provider cast=(GtkStyleProvider *)
-	 * @param priority cast=(guint)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_style_context_add_provider_for_screen(long screen, long provider, int priority);
-	/**
-	 * @method flags=dynamic
-	 * @param display cast=(GdkDisplay *)
-	 * @param provider cast=(GtkStyleProvider *)
-	 * @param priority cast=(guint)
-	 */
-	/* [GTK4 only] */
-	public static final native void gtk_style_context_add_provider_for_display(long display, long provider, int priority);
-	/**
-	 * @param context cast=(GtkStyleContext *)
-	 * @param provider cast=(GtkStyleProvider *)
-	 * @param priority cast=(guint)
-	 */
-	public static final native void gtk_style_context_add_provider(long context, long provider, int priority);
 	/**
 	 * @param list_store cast=(GtkListStore *)
 	 * @param iter cast=(GtkTreeIter *)
@@ -1012,15 +966,21 @@
 	 * @param iter cast=(GtkTreeIter *)
 	 */
 	public static final native void gtk_list_store_set(long store, long iter, int column, boolean value, int terminator);
-	public static final native int gtk_get_major_version();
-	public static final native int gtk_get_minor_version();
-	public static final native int gtk_get_micro_version();
 
-	/** @method flags=dynamic */
-	/* [GTK2/GTK3; 3.22 deprecated, replaced] */
-	public static final native void gtk_menu_popup(long menu, long parent_menu_shell, long parent_menu_item, long func, long data, int button, int activate_time);
-	/** @method flags=dynamic */
-	public static final native void gtk_menu_popup_at_pointer(long menu, long trigger_event);
+	/* GtkCssProvider */
+	public static final native long gtk_css_provider_new();
+	/** @param provider cast=(GtkCssProvider *) */
+	public static final native long gtk_css_provider_to_string(long provider);
+
+	/* GtkStyleContext */
+	/**
+	 * @param context cast=(GtkStyleContext *)
+	 * @param provider cast=(GtkStyleProvider *)
+	 * @param priority cast=(guint)
+	 */
+	public static final native void gtk_style_context_add_provider(long context, long provider, int priority);
+
+	/* GtkMenuItem [GTK3 only] */
 	/** @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);
 
@@ -1044,14 +1004,6 @@
 	/* GtkMenuButton */
 	public static final native long gtk_menu_button_new();
 
-	/* GtkMenuButton [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param menu_button cast=(GtkMenuButton *)
-	 */
-	public static final native void gtk_menu_button_set_use_underline(long menu_button, boolean use_underline);
-
-
 	/* GtkMessageDialog */
 	/**
 	 * @param parent cast=(GtkWindow *)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk3/GTK3.java
index cc2cd2f..ac38bbb 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
@@ -605,8 +605,32 @@
 	 */
 	public static final native void gtk_selection_data_set(long selection_data, long type, int format, long data, int length);
 
-	/* GtkMenu/GtkMenuItem */
+	/* GtkMenu */
+	public static final native long gtk_menu_new();
+	/** @param menu cast=(GtkMenu *) */
+	public static final native void gtk_menu_popdown(long menu);
+	/**
+	 * @method flags=ignore_deprecations
+	 * @param menu cast=(GtkMenu *)
+	 * @param parent_menu_shell cast=(GtkWidget *)
+	 * @param parent_menu_item cast=(GtkWidget *)
+	 * @param func cast=(GtkMenuPositionFunc)
+	 * @param data cast=(gpointer)
+	 * @param button cast=(guint)
+	 * @param activate_time cast=(guint32)
+	 */
+	/* [GTK2/GTK3; 3.22 deprecated, replaced] */
+	public static final native void gtk_menu_popup(long menu, long parent_menu_shell, long parent_menu_item, long func, long data, int button, int activate_time);
+	/**
+	 * @param menu cast=(GtkMenu *)
+	 * @param trigger_event cast=(const GdkEvent*)
+	 */
+	public static final native void gtk_menu_popup_at_pointer(long menu, long trigger_event);
+
+	/* GtkMenuBar */
 	public static final native long gtk_menu_bar_new();
+
+	/* GtkMenuItem */
 	/** @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();
@@ -615,22 +639,6 @@
 	 * @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();
@@ -645,6 +653,21 @@
 	public static final native long gtk_radio_menu_item_new(long group);
 	public static final native long gtk_separator_menu_item_new();
 
+	/* GtkMenuShell */
+	/** @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);
+
 	/* GtkToolbar */
 	public static final native long gtk_toolbar_new();
 	/**
@@ -871,4 +894,24 @@
 	 * @param context cast=(GtkStyleContext *)
 	 */
 	public static final native void gtk_style_context_invalidate(long context);
+
+	/* GtkLabel */
+	/**
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap cast=(gboolean)
+	 */
+	public static final native void gtk_label_set_line_wrap(long label, boolean wrap);
+	/**
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap_mode cast=(PangoWrapMode)
+	 */
+	public static final native void gtk_label_set_line_wrap_mode(long label, int wrap_mode);
+
+	/* GtkStyleContext */
+	/**
+	 * @param screen cast=(GdkScreen *)
+	 * @param provider cast=(GtkStyleProvider *)
+	 * @param priority cast=(guint)
+	 */
+	public static final native void gtk_style_context_add_provider_for_screen(long screen, long provider, int priority);
 }
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 75aea38..85789b4 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
@@ -437,4 +437,28 @@
 	 * @param length cast=(gssize)
 	 */
 	public static final native void gtk_css_provider_load_from_data(long css_provider, byte[] data, long length);
+
+	/* GtkLabel */
+	/**
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap cast=(gboolean)
+	 */
+	public static final native void gtk_label_set_wrap(long label, boolean wrap);
+	/**
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap_mode cast=(PangoWrapMode)
+	 */
+	public static final native void gtk_label_set_wrap_mode(long label, int wrap_mode);
+
+	/* GtkStyleContext */
+	/**
+	 * @param display cast=(GdkDisplay *)
+	 * @param provider cast=(GtkStyleProvider *)
+	 * @param priority cast=(guint)
+	 */
+	public static final native void gtk_style_context_add_provider_for_display(long display, long provider, int priority);
+
+	/* GtkMenuButton */
+	/** @param menu_button cast=(GtkMenuButton *) */
+	public static final native void gtk_menu_button_set_use_underline(long menu_button, boolean use_underline);
 }
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 8d35b79..c6379a7 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
@@ -814,14 +814,14 @@
 			System.err.println("SWT Warning: Override of theme values failed. Reason: could not acquire display or provider.");
 			return;
 		}
-		GTK.gtk_style_context_add_provider_for_display (display, provider, GTK.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+		GTK4.gtk_style_context_add_provider_for_display (display, provider, GTK.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
 	} else {
 		long screen = GDK.gdk_screen_get_default();
 		if (screen == 0 || provider == 0) {
 			System.err.println("SWT Warning: Override of theme values failed. Reason: could not acquire screen or provider.");
 			return;
 		}
-		GTK.gtk_style_context_add_provider_for_screen (screen, provider, GTK.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+		GTK3.gtk_style_context_add_provider_for_screen (screen, provider, GTK.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
 	}
 	if (GTK.GTK4) {
 		GTK4.gtk_css_provider_load_from_data (provider, Converter.wcsToMbcs (combinedCSS.toString(), true), -1);
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 627fdd6..626326a 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
@@ -405,11 +405,11 @@
 
 		if ((style & SWT.WRAP) != 0) {
 			if (GTK.GTK4) {
-				GTK.gtk_label_set_wrap(labelHandle, true);
-				GTK.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+				GTK4.gtk_label_set_wrap(labelHandle, true);
+				GTK4.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
 			} else {
-				GTK.gtk_label_set_line_wrap (labelHandle, true);
-				GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+				GTK3.gtk_label_set_line_wrap (labelHandle, true);
+				GTK3.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
 			}
 		}
 	}
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 15a46eb..3e1a395 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
@@ -242,7 +242,7 @@
 
 		GTK3.gtk_container_add(box, label);
 		GTK.gtk_widget_show(label);
-		GTK.gtk_label_set_line_wrap(label, true);
+		GTK3.gtk_label_set_line_wrap(label, true);
 
 		GTK.gtk_box_set_homogeneous(box, false);
 		GTK.gtk_label_set_justify(label, GTK.GTK_JUSTIFY_CENTER);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index d21ce2b..cbf1e29 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
@@ -304,11 +304,11 @@
 	if ((style & SWT.SEPARATOR) != 0) return;
 	if ((style & SWT.WRAP) != 0) {
 		if (GTK.GTK4) {
-			GTK.gtk_label_set_wrap(labelHandle, true);
-			GTK.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+			GTK4.gtk_label_set_wrap(labelHandle, true);
+			GTK4.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
 		} else {
-			GTK.gtk_label_set_line_wrap (labelHandle, true);
-			GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+			GTK3.gtk_label_set_line_wrap (labelHandle, true);
+			GTK3.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
 		}
 	}
 	// In GTK 3 font description is inherited from parent widget which is not how SWT has always worked,
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 3bf88ee..3f8d127 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
@@ -286,7 +286,7 @@
 				* will fail.  The fix is to ensure that the timestamp of the last
 				* event processed is used.
 				*/
-				GTK.gtk_menu_popup (handle, 0, 0, address, data, 0, display.getLastEventTime ());
+				GTK3.gtk_menu_popup (handle, 0, 0, address, data, 0, display.getLastEventTime ());
 			} else {
 				long eventPtr = 0;
 				if (ableToSetLocation()) {
@@ -360,7 +360,7 @@
 					}
 					adjustParentWindowWayland(eventPtr);
 					verifyMenuPosition(getItemCount());
-					GTK.gtk_menu_popup_at_pointer(handle, eventPtr);
+					GTK3.gtk_menu_popup_at_pointer(handle, eventPtr);
 					if (GTK.GTK4) {
 						GDK.gdk_event_unref(eventPtr);
 					} else {
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 d6dc384..73e7073 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
@@ -228,7 +228,7 @@
 				GTK4.gtk_box_append(handle, menuButton);
 
 				arrowHandle = GTK4.gtk_widget_get_first_child(menuButton);
-				GTK.gtk_menu_button_set_use_underline(menuButton, true);
+				GTK4.gtk_menu_button_set_use_underline(menuButton, true);
 			} else {
 				handle = GTK3.gtk_menu_tool_button_new(0, null);
 				if (handle == 0) error(SWT.ERROR_NO_HANDLES);
