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

- GtkEditable Interface, GtkEntry, GtkExpander, GtkEventController,
GtkGestureClick, GtkFrame, GtkScrollbar, GtkViewport

Change-Id: Iceb49de58b23e73fa458b0d73a052a3c0874bad4
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/179987
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
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 238b803..305cc93 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
@@ -445,6 +445,123 @@
 }
 #endif
 
+#ifndef NO_gtk_1editable_1copy_1clipboard
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1editable_1copy_1clipboard)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1editable_1copy_1clipboard_FUNC);
+	gtk_editable_copy_clipboard((GtkEditable *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1editable_1copy_1clipboard_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1editable_1cut_1clipboard
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1editable_1cut_1clipboard)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1editable_1cut_1clipboard_FUNC);
+	gtk_editable_cut_clipboard((GtkEditable *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1editable_1cut_1clipboard_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1editable_1paste_1clipboard
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1editable_1paste_1clipboard)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1editable_1paste_1clipboard_FUNC);
+	gtk_editable_paste_clipboard((GtkEditable *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1editable_1paste_1clipboard_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1entry_1get_1layout
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1entry_1get_1layout)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1get_1layout_FUNC);
+	rc = (jlong)gtk_entry_get_layout((GtkEntry *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1get_1layout_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1entry_1get_1layout_1offsets
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1entry_1get_1layout_1offsets)
+	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1get_1layout_1offsets_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
+	gtk_entry_get_layout_offsets((GtkEntry *)arg0, (gint *)lparg1, (gint *)lparg2);
+fail:
+	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg1 && lparg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1get_1layout_1offsets_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1entry_1get_1text
+JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1entry_1get_1text)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1get_1text_FUNC);
+	rc = (jlong)gtk_entry_get_text((GtkEntry *)arg0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1get_1text_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1entry_1set_1text
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1entry_1set_1text)
+	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1set_1text_FUNC);
+	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
+	gtk_entry_set_text((GtkEntry *)arg0, (const gchar *)lparg1);
+fail:
+	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1set_1text_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1entry_1set_1width_1chars
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1entry_1set_1width_1chars)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1set_1width_1chars_FUNC);
+	gtk_entry_set_width_chars((GtkEntry *)arg0, (gint)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1set_1width_1chars_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1entry_1text_1index_1to_1layout_1index
+JNIEXPORT jint JNICALL GTK3_NATIVE(gtk_1entry_1text_1index_1to_1layout_1index)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	jint rc = 0;
+	GTK3_NATIVE_ENTER(env, that, gtk_1entry_1text_1index_1to_1layout_1index_FUNC);
+	rc = (jint)gtk_entry_text_index_to_layout_index((GtkEntry *)arg0, (gint)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1entry_1text_1index_1to_1layout_1index_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1handle_1event
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1event_1controller_1handle_1event)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1event_1controller_1handle_1event_FUNC);
+	gtk_event_controller_handle_event((GtkEventController *)arg0, (const GdkEvent *)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1event_1controller_1handle_1event_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1events_1pending
 JNIEXPORT jboolean JNICALL GTK3_NATIVE(gtk_1events_1pending)
 	(JNIEnv *env, jclass that)
@@ -583,6 +700,16 @@
 }
 #endif
 
+#ifndef NO_gtk_1frame_1set_1shadow_1type
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1frame_1set_1shadow_1type)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1frame_1set_1shadow_1type_FUNC);
+	gtk_frame_set_shadow_type((GtkFrame *)arg0, (GtkShadowType)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1frame_1set_1shadow_1type_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1get_1current_1event
 JNIEXPORT jlong JNICALL GTK3_NATIVE(gtk_1get_1current_1event)
 	(JNIEnv *env, jclass that)
@@ -1410,6 +1537,16 @@
 }
 #endif
 
+#ifndef NO_gtk_1viewport_1set_1shadow_1type
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1viewport_1set_1shadow_1type)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK3_NATIVE_ENTER(env, that, gtk_1viewport_1set_1shadow_1type_FUNC);
+	gtk_viewport_set_shadow_type((GtkViewport *)arg0, (GtkShadowType)arg1);
+	GTK3_NATIVE_EXIT(env, that, gtk_1viewport_1set_1shadow_1type_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 b3dee54..f130728 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
@@ -59,6 +59,16 @@
 	"gtk_1drag_1finish",
 	"gtk_1drag_1get_1data",
 	"gtk_1drag_1set_1icon_1surface",
+	"gtk_1editable_1copy_1clipboard",
+	"gtk_1editable_1cut_1clipboard",
+	"gtk_1editable_1paste_1clipboard",
+	"gtk_1entry_1get_1layout",
+	"gtk_1entry_1get_1layout_1offsets",
+	"gtk_1entry_1get_1text",
+	"gtk_1entry_1set_1text",
+	"gtk_1entry_1set_1width_1chars",
+	"gtk_1entry_1text_1index_1to_1layout_1index",
+	"gtk_1event_1controller_1handle_1event",
 	"gtk_1events_1pending",
 	"gtk_1file_1chooser_1get_1filename",
 	"gtk_1file_1chooser_1get_1filenames",
@@ -71,6 +81,7 @@
 	"gtk_1file_1chooser_1set_1filename",
 	"gtk_1file_1chooser_1set_1local_1only",
 	"gtk_1file_1chooser_1set_1uri",
+	"gtk_1frame_1set_1shadow_1type",
 	"gtk_1get_1current_1event",
 	"gtk_1get_1current_1event_1state",
 	"gtk_1get_1event_1widget",
@@ -139,6 +150,7 @@
 	"gtk_1toolbar_1set_1icon_1size",
 	"gtk_1toolbar_1set_1show_1arrow",
 	"gtk_1toolbar_1set_1style",
+	"gtk_1viewport_1set_1shadow_1type",
 	"gtk_1widget_1get_1accessible",
 	"gtk_1window_1activate_1default",
 	"gtk_1window_1add_1accel_1group",
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 b2a0064..ef9ad9c 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
@@ -69,6 +69,16 @@
 	gtk_1drag_1finish_FUNC,
 	gtk_1drag_1get_1data_FUNC,
 	gtk_1drag_1set_1icon_1surface_FUNC,
+	gtk_1editable_1copy_1clipboard_FUNC,
+	gtk_1editable_1cut_1clipboard_FUNC,
+	gtk_1editable_1paste_1clipboard_FUNC,
+	gtk_1entry_1get_1layout_FUNC,
+	gtk_1entry_1get_1layout_1offsets_FUNC,
+	gtk_1entry_1get_1text_FUNC,
+	gtk_1entry_1set_1text_FUNC,
+	gtk_1entry_1set_1width_1chars_FUNC,
+	gtk_1entry_1text_1index_1to_1layout_1index_FUNC,
+	gtk_1event_1controller_1handle_1event_FUNC,
 	gtk_1events_1pending_FUNC,
 	gtk_1file_1chooser_1get_1filename_FUNC,
 	gtk_1file_1chooser_1get_1filenames_FUNC,
@@ -81,6 +91,7 @@
 	gtk_1file_1chooser_1set_1filename_FUNC,
 	gtk_1file_1chooser_1set_1local_1only_FUNC,
 	gtk_1file_1chooser_1set_1uri_FUNC,
+	gtk_1frame_1set_1shadow_1type_FUNC,
 	gtk_1get_1current_1event_FUNC,
 	gtk_1get_1current_1event_1state_FUNC,
 	gtk_1get_1event_1widget_FUNC,
@@ -149,6 +160,7 @@
 	gtk_1toolbar_1set_1icon_1size_FUNC,
 	gtk_1toolbar_1set_1show_1arrow_FUNC,
 	gtk_1toolbar_1set_1style_FUNC,
+	gtk_1viewport_1set_1shadow_1type_FUNC,
 	gtk_1widget_1get_1accessible_FUNC,
 	gtk_1window_1activate_1default_FUNC,
 	gtk_1window_1add_1accel_1group_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 04d686a..a998bfb 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
@@ -319,6 +319,108 @@
 }
 #endif
 
+#ifndef NO_gtk_1entry_1get_1buffer
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1entry_1get_1buffer)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1entry_1get_1buffer_FUNC);
+	rc = (jlong)gtk_entry_get_buffer((GtkEntry *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1entry_1get_1buffer_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1entry_1set_1buffer
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1entry_1set_1buffer)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1entry_1set_1buffer_FUNC);
+	gtk_entry_set_buffer((GtkEntry *)arg0, (GtkEntryBuffer *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1entry_1set_1buffer_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1entry_1set_1input_1hints
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1entry_1set_1input_1hints)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1entry_1set_1input_1hints_FUNC);
+	gtk_entry_set_input_hints((GtkEntry *)arg0, (GtkInputHints)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1entry_1set_1input_1hints_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1focus_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1event_1controller_1focus_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1event_1controller_1focus_1new_FUNC);
+	rc = (jlong)gtk_event_controller_focus_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1event_1controller_1focus_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1get_1current_1event
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1event_1controller_1get_1current_1event)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
+	rc = (jlong)gtk_event_controller_get_current_event((GtkEventController *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1key_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1event_1controller_1key_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1event_1controller_1key_1new_FUNC);
+	rc = (jlong)gtk_event_controller_key_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1event_1controller_1key_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1motion_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1event_1controller_1motion_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1event_1controller_1motion_1new_FUNC);
+	rc = (jlong)gtk_event_controller_motion_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1event_1controller_1motion_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1event_1controller_1scroll_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1event_1controller_1scroll_1new)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1event_1controller_1scroll_1new_FUNC);
+	rc = (jlong)gtk_event_controller_scroll_new((GtkEventControllerScrollFlags)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1event_1controller_1scroll_1new_FUNC);
+	return rc;
+}
+#endif
+
+#ifndef NO_gtk_1expander_1set_1child
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1expander_1set_1child)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1expander_1set_1child_FUNC);
+	gtk_expander_set_child((GtkExpander *)arg0, (GtkWidget *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1expander_1set_1child_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1file_1chooser_1get_1file
 JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1file_1chooser_1get_1file)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -367,6 +469,28 @@
 }
 #endif
 
+#ifndef NO_gtk_1frame_1set_1child
+JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1frame_1set_1child)
+	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+	GTK4_NATIVE_ENTER(env, that, gtk_1frame_1set_1child_FUNC);
+	gtk_frame_set_child((GtkFrame *)arg0, (GtkWidget *)arg1);
+	GTK4_NATIVE_EXIT(env, that, gtk_1frame_1set_1child_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1gesture_1click_1new
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1gesture_1click_1new)
+	(JNIEnv *env, jclass that)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1gesture_1click_1new_FUNC);
+	rc = (jlong)gtk_gesture_click_new();
+	GTK4_NATIVE_EXIT(env, that, gtk_1gesture_1click_1new_FUNC);
+	return rc;
+}
+#endif
+
 #ifndef NO_gtk_1hsv_1to_1rgb
 JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1hsv_1to_1rgb)
 	(JNIEnv *env, jclass that, jfloat arg0, jfloat arg1, jfloat arg2, jfloatArray arg3, jfloatArray arg4, jfloatArray arg5)
@@ -587,6 +711,18 @@
 }
 #endif
 
+#ifndef NO_gtk_1scrollbar_1get_1adjustment
+JNIEXPORT jlong JNICALL GTK4_NATIVE(gtk_1scrollbar_1get_1adjustment)
+	(JNIEnv *env, jclass that, jlong arg0)
+{
+	jlong rc = 0;
+	GTK4_NATIVE_ENTER(env, that, gtk_1scrollbar_1get_1adjustment_FUNC);
+	rc = (jlong)gtk_scrollbar_get_adjustment((GtkScrollbar *)arg0);
+	GTK4_NATIVE_EXIT(env, that, gtk_1scrollbar_1get_1adjustment_FUNC);
+	return rc;
+}
+#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)
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 e7079cf..b74b68d 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
@@ -48,10 +48,21 @@
 	"gtk_1drag_1source_1set_1icon",
 	"gtk_1drop_1target_1async_1new",
 	"gtk_1drop_1target_1async_1set_1formats",
+	"gtk_1entry_1get_1buffer",
+	"gtk_1entry_1set_1buffer",
+	"gtk_1entry_1set_1input_1hints",
+	"gtk_1event_1controller_1focus_1new",
+	"gtk_1event_1controller_1get_1current_1event",
+	"gtk_1event_1controller_1key_1new",
+	"gtk_1event_1controller_1motion_1new",
+	"gtk_1event_1controller_1scroll_1new",
+	"gtk_1expander_1set_1child",
 	"gtk_1file_1chooser_1get_1file",
 	"gtk_1file_1chooser_1get_1files",
 	"gtk_1file_1chooser_1set_1current_1folder",
 	"gtk_1file_1chooser_1set_1file",
+	"gtk_1frame_1set_1child",
+	"gtk_1gesture_1click_1new",
 	"gtk_1hsv_1to_1rgb",
 	"gtk_1icon_1paintable_1get_1file",
 	"gtk_1icon_1theme_1get_1for_1display",
@@ -69,6 +80,7 @@
 	"gtk_1popover_1menu_1set_1menu_1model",
 	"gtk_1popover_1set_1has_1arrow",
 	"gtk_1rgb_1to_1hsv",
+	"gtk_1scrollbar_1get_1adjustment",
 	"gtk_1scrolled_1window_1get_1has_1frame",
 	"gtk_1scrolled_1window_1new",
 	"gtk_1scrolled_1window_1set_1child",
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 45e2107..cbee09d 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
@@ -58,10 +58,21 @@
 	gtk_1drag_1source_1set_1icon_FUNC,
 	gtk_1drop_1target_1async_1new_FUNC,
 	gtk_1drop_1target_1async_1set_1formats_FUNC,
+	gtk_1entry_1get_1buffer_FUNC,
+	gtk_1entry_1set_1buffer_FUNC,
+	gtk_1entry_1set_1input_1hints_FUNC,
+	gtk_1event_1controller_1focus_1new_FUNC,
+	gtk_1event_1controller_1get_1current_1event_FUNC,
+	gtk_1event_1controller_1key_1new_FUNC,
+	gtk_1event_1controller_1motion_1new_FUNC,
+	gtk_1event_1controller_1scroll_1new_FUNC,
+	gtk_1expander_1set_1child_FUNC,
 	gtk_1file_1chooser_1get_1file_FUNC,
 	gtk_1file_1chooser_1get_1files_FUNC,
 	gtk_1file_1chooser_1set_1current_1folder_FUNC,
 	gtk_1file_1chooser_1set_1file_FUNC,
+	gtk_1frame_1set_1child_FUNC,
+	gtk_1gesture_1click_1new_FUNC,
 	gtk_1hsv_1to_1rgb_FUNC,
 	gtk_1icon_1paintable_1get_1file_FUNC,
 	gtk_1icon_1theme_1get_1for_1display_FUNC,
@@ -79,6 +90,7 @@
 	gtk_1popover_1menu_1set_1menu_1model_FUNC,
 	gtk_1popover_1set_1has_1arrow_FUNC,
 	gtk_1rgb_1to_1hsv_FUNC,
+	gtk_1scrollbar_1get_1adjustment_FUNC,
 	gtk_1scrolled_1window_1get_1has_1frame_FUNC,
 	gtk_1scrolled_1window_1new_FUNC,
 	gtk_1scrolled_1window_1set_1child_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 d13dc8c..1b46771 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
@@ -4689,42 +4689,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1editable_1copy_1clipboard
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1editable_1copy_1clipboard)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1editable_1copy_1clipboard_FUNC);
-/*
-	gtk_editable_copy_clipboard((GtkEditable *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_editable_copy_clipboard)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEditable *))fp)((GtkEditable *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1editable_1copy_1clipboard_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1editable_1cut_1clipboard
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1editable_1cut_1clipboard)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1editable_1cut_1clipboard_FUNC);
-/*
-	gtk_editable_cut_clipboard((GtkEditable *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_editable_cut_clipboard)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEditable *))fp)((GtkEditable *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1editable_1cut_1clipboard_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1editable_1delete_1selection
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1editable_1delete_1selection)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -4805,24 +4769,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1editable_1paste_1clipboard
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1editable_1paste_1clipboard)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1editable_1paste_1clipboard_FUNC);
-/*
-	gtk_editable_paste_clipboard((GtkEditable *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_editable_paste_clipboard)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEditable *))fp)((GtkEditable *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1editable_1paste_1clipboard_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1editable_1select_1region
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1editable_1select_1region)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2)
@@ -4891,26 +4837,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1get_1buffer
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1entry_1get_1buffer)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1get_1buffer_FUNC);
-/*
-	rc = (jlong)gtk_entry_get_buffer((GtkEntry *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_get_buffer)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkEntry *))fp)((GtkEntry *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1get_1buffer_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1entry_1get_1icon_1area
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1get_1icon_1area)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1, jobject arg2)
@@ -4937,51 +4863,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1get_1layout
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1entry_1get_1layout)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1get_1layout_FUNC);
-/*
-	rc = (jlong)gtk_entry_get_layout((GtkEntry *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_get_layout)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkEntry *))fp)((GtkEntry *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1get_1layout_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1entry_1get_1layout_1offsets
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1get_1layout_1offsets)
-	(JNIEnv *env, jclass that, jlong arg0, jintArray arg1, jintArray arg2)
-{
-	jint *lparg1=NULL;
-	jint *lparg2=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1get_1layout_1offsets_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL)) == NULL) goto fail;
-	if (arg2) if ((lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL)) == NULL) goto fail;
-/*
-	gtk_entry_get_layout_offsets((GtkEntry *)arg0, (gint *)lparg1, (gint *)lparg2);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_get_layout_offsets)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEntry *, gint *, gint *))fp)((GtkEntry *)arg0, (gint *)lparg1, (gint *)lparg2);
-		}
-	}
-fail:
-	if (arg2 && lparg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
-	if (arg1 && lparg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1get_1layout_1offsets_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1entry_1get_1max_1length
 JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1entry_1get_1max_1length)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -4994,26 +4875,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1get_1text
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1entry_1get_1text)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1get_1text_FUNC);
-/*
-	rc = (jlong)gtk_entry_get_text((GtkEntry *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_get_text)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkEntry *))fp)((GtkEntry *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1get_1text_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1entry_1get_1visibility
 JNIEXPORT jboolean JNICALL GTK_NATIVE(gtk_1entry_1get_1visibility)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -5048,24 +4909,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1set_1buffer
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1buffer)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1set_1buffer_FUNC);
-/*
-	gtk_entry_set_buffer((GtkEntry *)arg0, (GtkEntryBuffer *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_set_buffer)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEntry *, GtkEntryBuffer *))fp)((GtkEntry *)arg0, (GtkEntryBuffer *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1set_1buffer_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1entry_1set_1has_1frame
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1has_1frame)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -5110,16 +4953,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1set_1input_1hints
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1input_1hints)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1set_1input_1hints_FUNC);
-	gtk_entry_set_input_hints((GtkEntry *)arg0, (GtkInputHints)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1set_1input_1hints_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1entry_1set_1invisible_1char
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1invisible_1char)
 	(JNIEnv *env, jclass that, jlong arg0, jchar arg1)
@@ -5164,28 +4997,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1set_1text
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1text)
-	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
-{
-	jbyte *lparg1=NULL;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1set_1text_FUNC);
-	if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
-/*
-	gtk_entry_set_text((GtkEntry *)arg0, (const gchar *)lparg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_set_text)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEntry *, const gchar *))fp)((GtkEntry *)arg0, (const gchar *)lparg1);
-		}
-	}
-fail:
-	if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1set_1text_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1entry_1set_1visibility
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1visibility)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -5196,44 +5007,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1entry_1set_1width_1chars
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1entry_1set_1width_1chars)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1set_1width_1chars_FUNC);
-/*
-	gtk_entry_set_width_chars((GtkEntry *)arg0, (gint)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_set_width_chars)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkEntry *, gint))fp)((GtkEntry *)arg0, (gint)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1set_1width_1chars_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1entry_1text_1index_1to_1layout_1index
-JNIEXPORT jint JNICALL GTK_NATIVE(gtk_1entry_1text_1index_1to_1layout_1index)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	jint rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1entry_1text_1index_1to_1layout_1index_FUNC);
-/*
-	rc = (jint)gtk_entry_text_index_to_layout_index((GtkEntry *)arg0, (gint)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_entry_text_index_to_layout_index)
-		if (fp) {
-			rc = (jint)((jint (CALLING_CONVENTION*)(GtkEntry *, gint))fp)((GtkEntry *)arg0, (gint)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1entry_1text_1index_1to_1layout_1index_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1enumerate_1printers
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1enumerate_1printers)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlong arg2, jboolean arg3)
@@ -5264,46 +5037,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1event_1controller_1focus_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1focus_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1focus_1new_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_focus_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_focus_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1focus_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1event_1controller_1get_1current_1event
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1get_1current_1event)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_get_current_event((GtkEventController *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_get_current_event)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkEventController *))fp)((GtkEventController *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1get_1current_1event_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1event_1controller_1get_1widget
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1get_1widget)
 	(JNIEnv *env, jclass that, jlong arg0)
@@ -5316,104 +5049,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1event_1controller_1handle_1event
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1event_1controller_1handle_1event)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1handle_1event_FUNC);
-/*
-	gtk_event_controller_handle_event(arg0, arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_handle_event)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(jlong, jlong))fp)(arg0, arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1handle_1event_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1event_1controller_1key_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1key_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1key_1new_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_key_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_key_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1key_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1event_1controller_1legacy_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1legacy_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1legacy_1new_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_legacy_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_legacy_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1legacy_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1event_1controller_1motion_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1motion_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1motion_1new_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_motion_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_motion_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1motion_1new_FUNC);
-	return rc;
-}
-#endif
-
-#ifndef NO_gtk_1event_1controller_1scroll_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1event_1controller_1scroll_1new)
-	(JNIEnv *env, jclass that, jint arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1event_1controller_1scroll_1new_FUNC);
-/*
-	rc = (jlong)gtk_event_controller_scroll_new(arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_event_controller_scroll_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(jint))fp)(arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1event_1controller_1scroll_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1event_1controller_1set_1propagation_1phase
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1event_1controller_1set_1propagation_1phase)
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
@@ -5464,24 +5099,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1expander_1set_1child
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1expander_1set_1child)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1expander_1set_1child_FUNC);
-/*
-	gtk_expander_set_child((GtkExpander *)arg0, (GtkWidget *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_expander_set_child)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkExpander *, GtkWidget *))fp)((GtkExpander *)arg0, (GtkWidget *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1expander_1set_1child_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1expander_1set_1expanded
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1expander_1set_1expanded)
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
@@ -5710,24 +5327,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1frame_1set_1child
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1frame_1set_1child)
-	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1frame_1set_1child_FUNC);
-/*
-	gtk_frame_set_child((GtkFrame *)arg0, (GtkWidget *)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_frame_set_child)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkFrame *, GtkWidget *))fp)((GtkFrame *)arg0, (GtkWidget *)arg1);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1frame_1set_1child_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1frame_1set_1label_1widget
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1frame_1set_1label_1widget)
 	(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
@@ -5738,36 +5337,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1frame_1set_1shadow_1type
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1frame_1set_1shadow_1type)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1frame_1set_1shadow_1type_FUNC);
-	gtk_frame_set_shadow_type((GtkFrame *)arg0, (GtkShadowType)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1frame_1set_1shadow_1type_FUNC);
-}
-#endif
-
-#ifndef NO_gtk_1gesture_1click_1new
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1gesture_1click_1new)
-	(JNIEnv *env, jclass that)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1gesture_1click_1new_FUNC);
-/*
-	rc = (jlong)gtk_gesture_click_new();
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_gesture_click_new)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)())fp)();
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1gesture_1click_1new_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1gesture_1drag_1get_1offset
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1gesture_1drag_1get_1offset)
 	(JNIEnv *env, jclass that, jlong arg0, jdoubleArray arg1, jdoubleArray arg2)
@@ -7992,26 +7561,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1scrollbar_1get_1adjustment
-JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrollbar_1get_1adjustment)
-	(JNIEnv *env, jclass that, jlong arg0)
-{
-	jlong rc = 0;
-	GTK_NATIVE_ENTER(env, that, gtk_1scrollbar_1get_1adjustment_FUNC);
-/*
-	rc = (jlong)gtk_scrollbar_get_adjustment((GtkScrollbar *)arg0);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_scrollbar_get_adjustment)
-		if (fp) {
-			rc = (jlong)((jlong (CALLING_CONVENTION*)(GtkScrollbar *))fp)((GtkScrollbar *)arg0);
-		}
-	}
-	GTK_NATIVE_EXIT(env, that, gtk_1scrollbar_1get_1adjustment_FUNC);
-	return rc;
-}
-#endif
-
 #ifndef NO_gtk_1scrollbar_1new
 JNIEXPORT jlong JNICALL GTK_NATIVE(gtk_1scrollbar_1new)
 	(JNIEnv *env, jclass that, jint arg0, jlong arg1)
@@ -10540,16 +10089,6 @@
 }
 #endif
 
-#ifndef NO_gtk_1viewport_1set_1shadow_1type
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1viewport_1set_1shadow_1type)
-	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
-	GTK_NATIVE_ENTER(env, that, gtk_1viewport_1set_1shadow_1type_FUNC);
-	gtk_viewport_set_shadow_type((GtkViewport *)arg0, (GtkShadowType)arg1);
-	GTK_NATIVE_EXIT(env, that, gtk_1viewport_1set_1shadow_1type_FUNC);
-}
-#endif
-
 #ifndef NO_gtk_1widget_1action_1set_1enabled
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1widget_1action_1set_1enabled)
 	(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jboolean arg2)
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 c4c691f..362e74a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.h
@@ -349,10 +349,6 @@
 #define NO_gdk_1keymap_1translate_1keyboard_1state
 #define NO_gdk_1keymap_1get_1entries_1for_1keyval
 
-// No GtkShadowType in GTK4
-#define NO_gtk_1viewport_1set_1shadow_1type
-#define NO_gtk_1frame_1set_1shadow_1type
-
 // GdkAtom removed
 #define NO_gtk_1drag_1get_1data__JJJ
 #define NO_gdk_1text_1property_1to_1utf8_1list_1for_1display
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 7b7febf..5f9b2b8 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
@@ -382,60 +382,40 @@
 	"gtk_1css_1provider_1new",
 	"gtk_1css_1provider_1to_1string",
 	"gtk_1dialog_1add_1button",
-	"gtk_1editable_1copy_1clipboard",
-	"gtk_1editable_1cut_1clipboard",
 	"gtk_1editable_1delete_1selection",
 	"gtk_1editable_1delete_1text",
 	"gtk_1editable_1get_1editable",
 	"gtk_1editable_1get_1position",
 	"gtk_1editable_1get_1selection_1bounds",
 	"gtk_1editable_1insert_1text",
-	"gtk_1editable_1paste_1clipboard",
 	"gtk_1editable_1select_1region",
 	"gtk_1editable_1set_1editable",
 	"gtk_1editable_1set_1position",
 	"gtk_1entry_1buffer_1delete_1text",
 	"gtk_1entry_1buffer_1get_1text",
 	"gtk_1entry_1buffer_1set_1text",
-	"gtk_1entry_1get_1buffer",
 	"gtk_1entry_1get_1icon_1area",
 	"gtk_1entry_1get_1invisible_1char",
-	"gtk_1entry_1get_1layout",
-	"gtk_1entry_1get_1layout_1offsets",
 	"gtk_1entry_1get_1max_1length",
-	"gtk_1entry_1get_1text",
 	"gtk_1entry_1get_1visibility",
 	"gtk_1entry_1new",
 	"gtk_1entry_1set_1alignment",
-	"gtk_1entry_1set_1buffer",
 	"gtk_1entry_1set_1has_1frame",
 	"gtk_1entry_1set_1icon_1activatable",
 	"gtk_1entry_1set_1icon_1from_1icon_1name",
 	"gtk_1entry_1set_1icon_1sensitive",
-	"gtk_1entry_1set_1input_1hints",
 	"gtk_1entry_1set_1invisible_1char",
 	"gtk_1entry_1set_1max_1length",
 	"gtk_1entry_1set_1placeholder_1text",
 	"gtk_1entry_1set_1tabs",
-	"gtk_1entry_1set_1text",
 	"gtk_1entry_1set_1visibility",
-	"gtk_1entry_1set_1width_1chars",
-	"gtk_1entry_1text_1index_1to_1layout_1index",
 	"gtk_1enumerate_1printers",
 	"gtk_1event_1box_1new",
-	"gtk_1event_1controller_1focus_1new",
-	"gtk_1event_1controller_1get_1current_1event",
 	"gtk_1event_1controller_1get_1widget",
-	"gtk_1event_1controller_1handle_1event",
-	"gtk_1event_1controller_1key_1new",
-	"gtk_1event_1controller_1legacy_1new",
-	"gtk_1event_1controller_1motion_1new",
-	"gtk_1event_1controller_1scroll_1new",
 	"gtk_1event_1controller_1set_1propagation_1phase",
 	"gtk_1expander_1get_1expanded",
 	"gtk_1expander_1get_1label_1widget",
 	"gtk_1expander_1new",
-	"gtk_1expander_1set_1child",
 	"gtk_1expander_1set_1expanded",
 	"gtk_1expander_1set_1label_1widget",
 	"gtk_1file_1chooser_1add_1filter",
@@ -453,10 +433,7 @@
 	"gtk_1font_1chooser_1set_1font",
 	"gtk_1frame_1get_1label_1widget",
 	"gtk_1frame_1new",
-	"gtk_1frame_1set_1child",
 	"gtk_1frame_1set_1label_1widget",
-	"gtk_1frame_1set_1shadow_1type",
-	"gtk_1gesture_1click_1new",
 	"gtk_1gesture_1drag_1get_1offset",
 	"gtk_1gesture_1drag_1get_1start_1point",
 	"gtk_1gesture_1drag_1new",
@@ -625,7 +602,6 @@
 	"gtk_1scale_1set_1digits",
 	"gtk_1scale_1set_1draw_1value",
 	"gtk_1scrollable_1get_1vadjustment",
-	"gtk_1scrollbar_1get_1adjustment",
 	"gtk_1scrollbar_1new",
 	"gtk_1scrolled_1window_1get_1hadjustment",
 	"gtk_1scrolled_1window_1get_1hscrollbar",
@@ -818,7 +794,6 @@
 	"gtk_1tree_1view_1set_1headers_1visible",
 	"gtk_1tree_1view_1set_1model",
 	"gtk_1tree_1view_1set_1search_1column",
-	"gtk_1viewport_1set_1shadow_1type",
 	"gtk_1widget_1action_1set_1enabled",
 	"gtk_1widget_1activate",
 	"gtk_1widget_1activate_1action",
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 c18f596..fe85597 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
@@ -380,60 +380,40 @@
 	gtk_1css_1provider_1new_FUNC,
 	gtk_1css_1provider_1to_1string_FUNC,
 	gtk_1dialog_1add_1button_FUNC,
-	gtk_1editable_1copy_1clipboard_FUNC,
-	gtk_1editable_1cut_1clipboard_FUNC,
 	gtk_1editable_1delete_1selection_FUNC,
 	gtk_1editable_1delete_1text_FUNC,
 	gtk_1editable_1get_1editable_FUNC,
 	gtk_1editable_1get_1position_FUNC,
 	gtk_1editable_1get_1selection_1bounds_FUNC,
 	gtk_1editable_1insert_1text_FUNC,
-	gtk_1editable_1paste_1clipboard_FUNC,
 	gtk_1editable_1select_1region_FUNC,
 	gtk_1editable_1set_1editable_FUNC,
 	gtk_1editable_1set_1position_FUNC,
 	gtk_1entry_1buffer_1delete_1text_FUNC,
 	gtk_1entry_1buffer_1get_1text_FUNC,
 	gtk_1entry_1buffer_1set_1text_FUNC,
-	gtk_1entry_1get_1buffer_FUNC,
 	gtk_1entry_1get_1icon_1area_FUNC,
 	gtk_1entry_1get_1invisible_1char_FUNC,
-	gtk_1entry_1get_1layout_FUNC,
-	gtk_1entry_1get_1layout_1offsets_FUNC,
 	gtk_1entry_1get_1max_1length_FUNC,
-	gtk_1entry_1get_1text_FUNC,
 	gtk_1entry_1get_1visibility_FUNC,
 	gtk_1entry_1new_FUNC,
 	gtk_1entry_1set_1alignment_FUNC,
-	gtk_1entry_1set_1buffer_FUNC,
 	gtk_1entry_1set_1has_1frame_FUNC,
 	gtk_1entry_1set_1icon_1activatable_FUNC,
 	gtk_1entry_1set_1icon_1from_1icon_1name_FUNC,
 	gtk_1entry_1set_1icon_1sensitive_FUNC,
-	gtk_1entry_1set_1input_1hints_FUNC,
 	gtk_1entry_1set_1invisible_1char_FUNC,
 	gtk_1entry_1set_1max_1length_FUNC,
 	gtk_1entry_1set_1placeholder_1text_FUNC,
 	gtk_1entry_1set_1tabs_FUNC,
-	gtk_1entry_1set_1text_FUNC,
 	gtk_1entry_1set_1visibility_FUNC,
-	gtk_1entry_1set_1width_1chars_FUNC,
-	gtk_1entry_1text_1index_1to_1layout_1index_FUNC,
 	gtk_1enumerate_1printers_FUNC,
 	gtk_1event_1box_1new_FUNC,
-	gtk_1event_1controller_1focus_1new_FUNC,
-	gtk_1event_1controller_1get_1current_1event_FUNC,
 	gtk_1event_1controller_1get_1widget_FUNC,
-	gtk_1event_1controller_1handle_1event_FUNC,
-	gtk_1event_1controller_1key_1new_FUNC,
-	gtk_1event_1controller_1legacy_1new_FUNC,
-	gtk_1event_1controller_1motion_1new_FUNC,
-	gtk_1event_1controller_1scroll_1new_FUNC,
 	gtk_1event_1controller_1set_1propagation_1phase_FUNC,
 	gtk_1expander_1get_1expanded_FUNC,
 	gtk_1expander_1get_1label_1widget_FUNC,
 	gtk_1expander_1new_FUNC,
-	gtk_1expander_1set_1child_FUNC,
 	gtk_1expander_1set_1expanded_FUNC,
 	gtk_1expander_1set_1label_1widget_FUNC,
 	gtk_1file_1chooser_1add_1filter_FUNC,
@@ -451,10 +431,7 @@
 	gtk_1font_1chooser_1set_1font_FUNC,
 	gtk_1frame_1get_1label_1widget_FUNC,
 	gtk_1frame_1new_FUNC,
-	gtk_1frame_1set_1child_FUNC,
 	gtk_1frame_1set_1label_1widget_FUNC,
-	gtk_1frame_1set_1shadow_1type_FUNC,
-	gtk_1gesture_1click_1new_FUNC,
 	gtk_1gesture_1drag_1get_1offset_FUNC,
 	gtk_1gesture_1drag_1get_1start_1point_FUNC,
 	gtk_1gesture_1drag_1new_FUNC,
@@ -623,7 +600,6 @@
 	gtk_1scale_1set_1digits_FUNC,
 	gtk_1scale_1set_1draw_1value_FUNC,
 	gtk_1scrollable_1get_1vadjustment_FUNC,
-	gtk_1scrollbar_1get_1adjustment_FUNC,
 	gtk_1scrollbar_1new_FUNC,
 	gtk_1scrolled_1window_1get_1hadjustment_FUNC,
 	gtk_1scrolled_1window_1get_1hscrollbar_FUNC,
@@ -816,7 +792,6 @@
 	gtk_1tree_1view_1set_1headers_1visible_FUNC,
 	gtk_1tree_1view_1set_1model_FUNC,
 	gtk_1tree_1view_1set_1search_1column_FUNC,
-	gtk_1viewport_1set_1shadow_1type_FUNC,
 	gtk_1widget_1action_1set_1enabled_FUNC,
 	gtk_1widget_1activate_FUNC,
 	gtk_1widget_1activate_1action_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 c999488..7a245fa 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
@@ -591,24 +591,6 @@
 	 */
 	public static final native void gtk_editable_insert_text(long editable, byte[] new_text, int new_text_length, int[] position);
 
-	/* GtkEditable Interface [GTK3 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param editable cast=(GtkEditable *)
-	 */
-	public static final native void gtk_editable_copy_clipboard(long editable);
-	/**
-	 * @method flags=dynamic
-	 * @param editable cast=(GtkEditable *)
-	 */
-	public static final native void gtk_editable_cut_clipboard(long editable);
-	/**
-	 * @method flags=dynamic
-	 * @param editable cast=(GtkEditable *)
-	 */
-	public static final native void gtk_editable_paste_clipboard(long editable);
-
-
 	/* GtkEntry */
 	public static final native long gtk_entry_new();
 	/** @param entry cast=(GtkEntry *) */
@@ -677,62 +659,6 @@
 	 */
 	public static final native void gtk_entry_set_tabs(long entry, long tabs);
 
-	/* GtkEntry [GTK3 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param self cast=(GtkEntry *)
-	 * @param n_chars cast=(gint)
-	 */
-	public static final native void gtk_entry_set_width_chars(long self, int n_chars);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 */
-	public static final native long gtk_entry_get_layout(long entry);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 * @param x cast=(gint *)
-	 * @param y cast=(gint *)
-	 */
-	public static final native void gtk_entry_get_layout_offsets(long entry, int[] x, int[] y);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 * @param index cast=(gint)
-	 */
-	public static final native int gtk_entry_text_index_to_layout_index(long entry, int index);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 */
-	public static final native long gtk_entry_get_text(long entry);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 * @param text cast=(const gchar *)
-	 */
-	public static final native void gtk_entry_set_text(long entry, byte[] text);
-
-	/* GtkEntry [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 * @param buffer cast=(GtkEntryBuffer *)
-	 */
-	public static final native void gtk_entry_set_buffer(long entry, long buffer);
-	/**
-	 * @method flags=dynamic
-	 * @param entry cast=(GtkEntry *)
-	 */
-	public static final native long gtk_entry_get_buffer(long entry);
-
-	/**
-	 * @param entry cast=(GtkEntry *)
-	 * @param hint cast=(GtkInputHints)
-	 */
-	public static final native void gtk_entry_set_input_hints(long entry, int hint);
-
 	/* GtkEntryBuffer */
 	/**
 	 * @param buffer cast=(GtkEntryBuffer *)
@@ -747,7 +673,6 @@
 	/** @param buffer cast=(GtkEntryBuffer *) */
 	public static final native long gtk_entry_buffer_get_text(long buffer);
 
-
 	/* GtkExpander */
 	/** @param label cast=(const gchar *) */
 	public static final native long gtk_expander_new(byte[] label);
@@ -763,15 +688,6 @@
 	/** @param expander cast=(GtkExpander *) */
 	public static final native long gtk_expander_get_label_widget(long expander);
 
-	/* GtkExpander [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param expander cast=(GtkExpander *)
-	 * @param child cast=(GtkWidget *)
-	 */
-	public static final native void gtk_expander_set_child(long expander, long child);
-
-
 	/* GtkFileChooser */
 	/**
 	 * @param chooser cast=(GtkFileChooser *)
@@ -805,39 +721,12 @@
 	/** @param controller cast=(GtkEventController *) */
 	public static final native long gtk_event_controller_get_widget(long controller);
 
-	/* GtkEventController [GTK3 only] */
-	/** @method flags=dynamic */
-	public static final native void gtk_event_controller_handle_event(long gesture, long event);
-
-	/* GtkEventController [GTK4 only] */
-	/** @method flags=dynamic */
-	public static final native long gtk_event_controller_legacy_new();
-	/** @method flags=dynamic */
-	public static final native long gtk_event_controller_focus_new();
-	/**
-	 * @method flags=dynamic
-	 * @param controller cast=(GtkEventController *)
-	 * */
-	public static final native long gtk_event_controller_get_current_event(long controller);
-	/** @method flags=dynamic */
-	public static final native long gtk_event_controller_key_new();
-	/** @method flags=dynamic */
-	public static final native long gtk_event_controller_motion_new();
-	/** @method flags=dynamic */
-	public static final native long gtk_event_controller_scroll_new(int flag);
-
-
 	/* GtkGestureSingle */
 	/** @method flags=dynamic */
 	public static final native void gtk_gesture_single_set_button(long gesture, int button);
 	/** @param gesture cast=(GtkGestureSingle *) */
 	public static final native int gtk_gesture_single_get_current_button(long gesture);
 
-	/* GtkGestureClick [GTK4 only] */
-	/** @method flags=dynamic */
-	public static final native long gtk_gesture_click_new();
-
-
 	/**
 	 * @method flags=dynamic
 	 * @param title cast=(const gchar *),flags=no_out
@@ -935,21 +824,6 @@
 	 */
 	public static final native void gtk_frame_set_label_widget(long frame, long label_widget);
 
-	/* GtkFrame [GTK3 only] */
-	/**
-	 * @param frame cast=(GtkFrame *)
-	 * @param type cast=(GtkShadowType)
-	 */
-	public static final native void gtk_frame_set_shadow_type(long frame, int type);
-
-	/* GtkFrame [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param frame cast=(GtkFrame *)
-	 * @param child cast=(GtkWidget *)
-	 */
-	public static final native void gtk_frame_set_child(long frame, long child);
-
 	/* GTK Initialization */
 	public static final native long gtk_get_default_language();
 	/**
@@ -971,13 +845,6 @@
 	 */
 	public static final native long gtk_scrollbar_new(int orientation, long adjustment);
 
-	/* GtkScrollbar [GTK4 only] */
-	/**
-	 * @method flags=dynamic
-	 * @param scrollbar cast=(GtkScrollbar *)
-	 */
-	public static final native long gtk_scrollbar_get_adjustment(long scrollbar);
-
 
 	public static final native long gtk_search_entry_new();
 	/**
@@ -2602,13 +2469,6 @@
 
 
 	/**
-	 * @param viewport cast=(GtkViewport *)
-	 * @param type cast=(GtkShadowType)
-	 */
-	/* [GTK3 only, if-def'd in os.h] */
-	public static final native void gtk_viewport_set_shadow_type(long viewport, int type);
-
-	/**
 	 * @param context cast=(GtkStyleContext *)
 	 * @param cr cast=(cairo_t *)
 	 * @param x cast=(gdouble)
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 90a68ba..2a124ed 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
@@ -625,4 +625,60 @@
 	 * @param error cast=(GError **)
 	 */
 	public static final native long gtk_icon_info_load_icon(long icon_info, long error[]);
+
+	/* GtkEditable Interface */
+	/** @param editable cast=(GtkEditable *) */
+	public static final native void gtk_editable_copy_clipboard(long editable);
+	/** @param editable cast=(GtkEditable *) */
+	public static final native void gtk_editable_cut_clipboard(long editable);
+	/** @param editable cast=(GtkEditable *) */
+	public static final native void gtk_editable_paste_clipboard(long editable);
+
+	/* GtkEntry */
+	/**
+	 * @param self cast=(GtkEntry *)
+	 * @param n_chars cast=(gint)
+	 */
+	public static final native void gtk_entry_set_width_chars(long self, int n_chars);
+	/** @param entry cast=(GtkEntry *) */
+	public static final native long gtk_entry_get_layout(long entry);
+	/**
+	 * @param entry cast=(GtkEntry *)
+	 * @param x cast=(gint *)
+	 * @param y cast=(gint *)
+	 */
+	public static final native void gtk_entry_get_layout_offsets(long entry, int[] x, int[] y);
+	/**
+	 * @param entry cast=(GtkEntry *)
+	 * @param index cast=(gint)
+	 */
+	public static final native int gtk_entry_text_index_to_layout_index(long entry, int index);
+	/** @param entry cast=(GtkEntry *) */
+	public static final native long gtk_entry_get_text(long entry);
+	/**
+	 * @param entry cast=(GtkEntry *)
+	 * @param text cast=(const gchar *)
+	 */
+	public static final native void gtk_entry_set_text(long entry, byte[] text);
+
+	/* GtkEventController */
+	/**
+	 * @param gesture cast=(GtkEventController *)
+	 * @param event cast=(const GdkEvent *)
+	 */
+	public static final native void gtk_event_controller_handle_event(long gesture, long event);
+
+	/* GtkFrame */
+	/**
+	 * @param frame cast=(GtkFrame *)
+	 * @param type cast=(GtkShadowType)
+	 */
+	public static final native void gtk_frame_set_shadow_type(long frame, int type);
+
+	/* GtkViewport */
+	/**
+	 * @param viewport cast=(GtkViewport *)
+	 * @param type cast=(GtkShadowType)
+	 */
+	public static final native void gtk_viewport_set_shadow_type(long viewport, int type);
 }
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 5b58bc4..0f1b645 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
@@ -301,4 +301,48 @@
 	/* GtkNative */
 	/** @param self cast=(GtkNative *) */
 	public static final native long gtk_native_get_surface(long self);
+
+	/* GtkEntry */
+	/**
+	 * @param entry cast=(GtkEntry *)
+	 * @param buffer cast=(GtkEntryBuffer *)
+	 */
+	public static final native void gtk_entry_set_buffer(long entry, long buffer);
+	/** @param entry cast=(GtkEntry *) */
+	public static final native long gtk_entry_get_buffer(long entry);
+	/**
+	 * @param entry cast=(GtkEntry *)
+	 * @param hint cast=(GtkInputHints)
+	 */
+	public static final native void gtk_entry_set_input_hints(long entry, int hint);
+
+	/* GtkExpander */
+	/**
+	 * @param expander cast=(GtkExpander *)
+	 * @param child cast=(GtkWidget *)
+	 */
+	public static final native void gtk_expander_set_child(long expander, long child);
+
+	/* GtkEventController */
+	public static final native long gtk_event_controller_focus_new();
+	/** @param controller cast=(GtkEventController *) */
+	public static final native long gtk_event_controller_get_current_event(long controller);
+	public static final native long gtk_event_controller_key_new();
+	public static final native long gtk_event_controller_motion_new();
+	/** @param flag cast=(GtkEventControllerScrollFlags) */
+	public static final native long gtk_event_controller_scroll_new(int flag);
+
+	/* GtkGestureClick */
+	public static final native long gtk_gesture_click_new();
+
+	/* GtkFrame */
+	/**
+	 * @param frame cast=(GtkFrame *)
+	 * @param child cast=(GtkWidget *)
+	 */
+	public static final native void gtk_frame_set_child(long frame, long child);
+
+	/* GtkScrollbar */
+	/** @param scrollbar cast=(GtkScrollbar *) */
+	public static final native long gtk_scrollbar_get_adjustment(long scrollbar);
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
index 1290655..c5cf49c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
@@ -451,10 +451,10 @@
 		}
 	} else {
 		if (GTK.GTK4) {
-			long bufferHandle = GTK.gtk_entry_get_buffer(entryHandle);
+			long bufferHandle = GTK4.gtk_entry_get_buffer(entryHandle);
 			GTK.gtk_entry_buffer_delete_text(bufferHandle, 0, -1);
 		} else {
-			GTK.gtk_entry_set_text(entryHandle, new byte[1]);
+			GTK3.gtk_entry_set_text(entryHandle, new byte[1]);
 		}
 	}
 	GTK.gtk_combo_box_set_active (handle, -1);
@@ -523,7 +523,7 @@
 			long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
 			GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 		} else {
-			GTK.gtk_editable_copy_clipboard(entryHandle);
+			GTK3.gtk_editable_copy_clipboard(entryHandle);
 		}
 	}
 }
@@ -623,7 +623,7 @@
 			long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
 			GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 		} else {
-			GTK.gtk_editable_cut_clipboard(entryHandle);
+			GTK3.gtk_editable_cut_clipboard(entryHandle);
 		}
 	}
 }
@@ -923,12 +923,12 @@
 		long eventHandle = handles[i];
 		if (eventHandle != 0) {
 			if (GTK.GTK4) {
-				long motionController = GTK.gtk_event_controller_motion_new();
+				long motionController = GTK4.gtk_event_controller_motion_new();
 				GTK.gtk_widget_add_controller(eventHandle, motionController);
 				OS.g_signal_connect (motionController, OS.motion, display.enterMotionScrollProc, MOTION);
 				OS.g_signal_connect (motionController, OS.motion, display.enterMotionScrollProc, MOTION_INVERSE);
 
-				long gestureController = GTK.gtk_gesture_click_new();
+				long gestureController = GTK4.gtk_gesture_click_new();
 				GTK.gtk_widget_add_controller(eventHandle, gestureController);
 				OS.g_signal_connect(gestureController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 				OS.g_signal_connect(gestureController, OS.released, display.gesturePressReleaseProc, GESTURE_RELEASED);
@@ -1016,7 +1016,7 @@
 	if (filter && entryHandle != 0) {
 		int [] index = new int [1];
 		int [] trailing = new int [1];
-		long layout = GTK.gtk_entry_get_layout (entryHandle);
+		long layout = GTK3.gtk_entry_get_layout (entryHandle);
 		OS.pango_layout_xy_to_index (layout, x * OS.PANGO_SCALE, y * OS.PANGO_SCALE, index, trailing);
 		long ptr = OS.pango_layout_get_text (layout);
 		int position = (int)OS.g_utf8_pointer_to_offset (ptr, ptr + index[0]) + trailing[0];
@@ -1097,10 +1097,10 @@
 		return new Point (0, 0);
 	}
 	int index = GTK.gtk_editable_get_position (entryHandle);
-	index = GTK.gtk_entry_text_index_to_layout_index (entryHandle, index);
+	index = GTK3.gtk_entry_text_index_to_layout_index (entryHandle, index);
 	int [] offset_x = new int [1], offset_y = new int [1];
-	GTK.gtk_entry_get_layout_offsets (entryHandle, offset_x, offset_y);
-	long layout = GTK.gtk_entry_get_layout (entryHandle);
+	GTK3.gtk_entry_get_layout_offsets (entryHandle, offset_x, offset_y);
+	long layout = GTK3.gtk_entry_get_layout (entryHandle);
 	PangoRectangle pos = new PangoRectangle ();
 	OS.pango_layout_index_to_pos (layout, index, pos);
 	Point thickness = getThickness (entryHandle);
@@ -1129,7 +1129,7 @@
 	if ((style & SWT.READ_ONLY) != 0) {
 		return 0;
 	}
-	long ptr = GTK.gtk_entry_get_text (entryHandle);
+	long ptr = GTK3.gtk_entry_get_text (entryHandle);
 	return (int)OS.g_utf8_offset_to_utf16_offset (ptr, GTK.gtk_editable_get_position (entryHandle));
 }
 
@@ -1301,7 +1301,7 @@
 	int [] end = new int [1];
 	if (entryHandle != 0) {
 		GTK.gtk_editable_get_selection_bounds (entryHandle, start, end);
-		long ptr = GTK.gtk_entry_get_text (entryHandle);
+		long ptr = GTK3.gtk_entry_get_text (entryHandle);
 		start[0] = (int)OS.g_utf8_offset_to_utf16_offset (ptr, start[0]);
 		end[0] = (int)OS.g_utf8_offset_to_utf16_offset (ptr, end[0]);
 	}
@@ -1342,10 +1342,10 @@
 	if (entryHandle != 0) {
 		long str = 0;
 		if (GTK.GTK4) {
-			long bufferHandle = GTK.gtk_entry_get_buffer(entryHandle);
+			long bufferHandle = GTK4.gtk_entry_get_buffer(entryHandle);
 			str = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
-			str = GTK.gtk_entry_get_text(entryHandle);
+			str = GTK3.gtk_entry_get_text(entryHandle);
 		}
 
 		if (str == 0) {
@@ -1557,7 +1557,7 @@
 @Override
 long gtk_delete_text (long widget, long start_pos, long end_pos) {
 	if (!hooks (SWT.Verify) && !filters (SWT.Verify)) return 0;
-	long ptr = GTK.gtk_entry_get_text (entryHandle);
+	long ptr = GTK3.gtk_entry_get_text (entryHandle);
 	if (end_pos == -1) end_pos = OS.g_utf8_strlen (ptr, -1);
 	int start = (int)OS.g_utf8_offset_to_utf16_offset (ptr, start_pos);
 	int end = (int)OS.g_utf8_offset_to_utf16_offset (ptr, end_pos);
@@ -1729,7 +1729,7 @@
 	String oldText = new String (Converter.mbcsToWcs (buffer));
 	int [] pos = new int [1];
 	C.memmove (pos, position, 4);
-	long ptr = GTK.gtk_entry_get_text (entryHandle);
+	long ptr = GTK3.gtk_entry_get_text (entryHandle);
 	if (pos [0] == -1) pos [0] = (int)OS.g_utf8_strlen (ptr, -1);
 	int start = (int)OS.g_utf8_offset_to_utf16_offset (ptr, pos [0]);
 	String newText = verifyText (oldText, start, start);
@@ -1935,7 +1935,7 @@
  */
 public void paste () {
 	checkWidget ();
-	if (entryHandle != 0) GTK.gtk_editable_paste_clipboard (entryHandle);
+	if (entryHandle != 0) GTK3.gtk_editable_paste_clipboard (entryHandle);
 }
 
 @Override
@@ -2578,10 +2578,10 @@
 	if (entryHandle != 0) {
 		long textPtr = 0;
 		if (GTK.GTK4) {
-			long bufferHandle = GTK.gtk_entry_get_buffer(entryHandle);
+			long bufferHandle = GTK4.gtk_entry_get_buffer(entryHandle);
 			textPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
-			textPtr = GTK.gtk_entry_get_text(entryHandle);
+			textPtr = GTK3.gtk_entry_get_text(entryHandle);
 		}
 
 		int start = (int)OS.g_utf16_offset_to_utf8_offset(textPtr, selection.x);
@@ -2634,7 +2634,7 @@
 	* fix is to block the firing of these events and fire them ourselves in a consistent manner.
 	*/
 	if (hooks (SWT.Verify) || filters (SWT.Verify)) {
-		long ptr = GTK.gtk_entry_get_text (entryHandle);
+		long ptr = GTK3.gtk_entry_get_text (entryHandle);
 		string = verifyText (string, 0, (int)OS.g_utf16_strlen (ptr, -1));
 		if (string == null) return;
 	}
@@ -2644,10 +2644,10 @@
 	OS.g_signal_handlers_block_matched (entryHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_TEXT);
 	OS.g_signal_handlers_block_matched (entryHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, INSERT_TEXT);
 	if (GTK.GTK4) {
-		long bufferHandle = GTK.gtk_entry_get_buffer(entryHandle);
+		long bufferHandle = GTK4.gtk_entry_get_buffer(entryHandle);
 		GTK.gtk_entry_buffer_set_text(bufferHandle, buffer, string.length());
 	} else {
-		GTK.gtk_entry_set_text (entryHandle, buffer);
+		GTK3.gtk_entry_set_text (entryHandle, buffer);
 	}
 	OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED);
 	OS.g_signal_handlers_unblock_matched (entryHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index 5ef3025..99837b6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
@@ -446,13 +446,13 @@
 
 private void hookKeyboardAndFocusSignals(long focusHandle) {
 	if (GTK.GTK4) {
-		long keyController = GTK.gtk_event_controller_key_new();
+		long keyController = GTK4.gtk_event_controller_key_new();
 		GTK.gtk_event_controller_set_propagation_phase(keyController, GTK.GTK_PHASE_TARGET);
 		GTK.gtk_widget_add_controller(focusHandle, keyController);
 		OS.g_signal_connect(keyController, OS.key_pressed, display.keyPressReleaseProc, KEY_PRESSED);
 		OS.g_signal_connect(keyController, OS.key_released, display.keyPressReleaseProc, KEY_RELEASED);
 
-		long focusController = GTK.gtk_event_controller_focus_new();
+		long focusController = GTK4.gtk_event_controller_focus_new();
 		GTK.gtk_event_controller_set_propagation_phase(focusController, GTK.GTK_PHASE_TARGET);
 		GTK.gtk_widget_add_controller(focusHandle, focusController);
 		OS.g_signal_connect(focusController, OS.enter, display.focusProc, FOCUS_IN);
@@ -471,23 +471,23 @@
 	long enterExitHandle = enterExitHandle();
 
 	if (GTK.GTK4) {
-		long clickGesture = GTK.gtk_gesture_click_new();
+		long clickGesture = GTK4.gtk_gesture_click_new();
 		GTK.gtk_gesture_single_set_button(clickGesture, 0);
 		GTK.gtk_widget_add_controller(eventHandle, clickGesture);
 		OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 		OS.g_signal_connect(clickGesture, OS.released, display.gesturePressReleaseProc, GESTURE_RELEASED);
 
-		long scrollController = GTK.gtk_event_controller_scroll_new(GTK.GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES);
+		long scrollController = GTK4.gtk_event_controller_scroll_new(GTK.GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES);
 		GTK.gtk_event_controller_set_propagation_phase(scrollController, GTK.GTK_PHASE_TARGET);
 		GTK.gtk_widget_add_controller(eventHandle, scrollController);
 		OS.g_signal_connect(scrollController, OS.scroll, display.enterMotionScrollProc, SCROLL);
 
-		long motionController = GTK.gtk_event_controller_motion_new();
+		long motionController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 		GTK.gtk_widget_add_controller(eventHandle, motionController);
 		OS.g_signal_connect(motionController, OS.motion, display.enterMotionScrollProc, MOTION);
 
-		long enterExitController = GTK.gtk_event_controller_motion_new();
+		long enterExitController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_event_controller_set_propagation_phase(enterExitController, GTK.GTK_PHASE_TARGET);
 		GTK.gtk_widget_add_controller(enterExitHandle, enterExitController);
 		OS.g_signal_connect(enterExitController, OS.enter, display.enterMotionScrollProc, ENTER);
@@ -4097,7 +4097,7 @@
 			}
 		}
 		if (dragging) {
-			GTK.gtk_event_controller_handle_event(dragGesture,event);
+			GTK3.gtk_event_controller_handle_event(dragGesture,event);
 			int eventType = GDK.gdk_event_get_event_type(event);
 			if (eventType == GDK.GDK_3BUTTON_PRESS) return 0;
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
index 8c0be8d..569fbe6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
@@ -1943,12 +1943,12 @@
 		byte [] dateTimeConverted = Converter.wcsToMbcs (dateTimeText, true);
 
 		if (GTK.GTK4) {
-			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
+			long bufferHandle = isDateWithDropDownButton() ? GTK4.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 			GTK.gtk_entry_buffer_set_text(bufferHandle, dateTimeConverted, dateTimeText.length());
 		} else {
 			//note, this is ignored if the control is in a fill-layout.
-			GTK.gtk_entry_set_width_chars(textEntryHandle, dateTimeText.length());
-			GTK.gtk_entry_set_text(textEntryHandle, dateTimeConverted);
+			GTK3.gtk_entry_set_width_chars(textEntryHandle, dateTimeText.length());
+			GTK3.gtk_entry_set_text(textEntryHandle, dateTimeConverted);
 		}
 
 		if (popupCalendar != null && calendar != null) {
@@ -2055,10 +2055,10 @@
 		long stringPtr;
 
 		if (GTK.GTK4) {
-			long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
+			long bufferHandle = isDateWithDropDownButton() ? GTK4.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 			stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
-			stringPtr = GTK.gtk_entry_get_text(textEntryHandle);
+			stringPtr = GTK3.gtk_entry_get_text(textEntryHandle);
 		}
 
 		if (stringPtr == 0) return "";
@@ -2104,10 +2104,10 @@
 
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
+		long bufferHandle = isDateWithDropDownButton() ? GTK4.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
-		stringPtr = GTK.gtk_entry_get_text (textEntryHandle);
+		stringPtr = GTK3.gtk_entry_get_text (textEntryHandle);
 	}
 
 	start[0] = (int)OS.g_utf8_offset_to_utf16_offset(stringPtr, start[0]);
@@ -2122,10 +2122,10 @@
 
 	long stringPtr;
 	if (GTK.GTK4) {
-		long bufferHandle = isDateWithDropDownButton() ? GTK.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
+		long bufferHandle = isDateWithDropDownButton() ? GTK4.gtk_entry_get_buffer(textEntryHandle) : GTK4.gtk_text_get_buffer(textEntryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
-		stringPtr = GTK.gtk_entry_get_text(textEntryHandle);
+		stringPtr = GTK3.gtk_entry_get_text(textEntryHandle);
 	}
 
 	start = (int) OS.g_utf16_offset_to_utf8_offset(stringPtr, start);
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 b362dcf..918ac44 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
@@ -162,7 +162,7 @@
 
 		if (!GTK.GTK4) {
 			long viewport = GTK3.gtk_bin_get_child (scrolledHandle);
-			GTK.gtk_viewport_set_shadow_type (viewport, GTK.GTK_SHADOW_NONE);
+			GTK3.gtk_viewport_set_shadow_type (viewport, GTK.GTK_SHADOW_NONE);
 		}
 	} else {
 		if (GTK.GTK4) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
index 2330fa6..4de7b19 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
@@ -127,7 +127,7 @@
 	clientHandle = OS.g_object_new (display.gtk_fixed_get_type (), 0);
 	if (clientHandle == 0) error (SWT.ERROR_NO_HANDLES);
 	if (GTK.GTK4) {
-		GTK.gtk_expander_set_child(handle, clientHandle);
+		GTK4.gtk_expander_set_child(handle, clientHandle);
 	} else {
 		GTK3.gtk_container_add (handle, clientHandle);
 	}
@@ -318,11 +318,11 @@
 	OS.g_signal_connect_closure (handle, OS.activate, display.getClosure (ACTIVATE), false);
 	OS.g_signal_connect_closure (handle, OS.activate, display.getClosure (ACTIVATE_INVERSE), true);
 	if (GTK.GTK4) {
-		long clickController = GTK.gtk_gesture_click_new();
+		long clickController = GTK4.gtk_gesture_click_new();
 		GTK.gtk_widget_add_controller(handle, clickController);
 		OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 
-		long motionController = GTK.gtk_event_controller_motion_new();
+		long motionController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_widget_add_controller(handle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
index c3b4c90..4736b03 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Group.java
@@ -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 provide an etched border
@@ -191,22 +192,22 @@
 
 	if (GTK.GTK4) {
 		OS.swt_fixed_add(fixedHandle, handle);
-		GTK.gtk_frame_set_child(handle, clientHandle);
+		GTK4.gtk_frame_set_child(handle, clientHandle);
 	} else {
 		GTK3.gtk_container_add (fixedHandle, handle);
 		GTK3.gtk_container_add (handle, clientHandle);
 
 		if ((style & SWT.SHADOW_IN) != 0) {
-			GTK.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_IN);
+			GTK3.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_IN);
 		}
 		if ((style & SWT.SHADOW_OUT) != 0) {
-			GTK.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_OUT);
+			GTK3.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_OUT);
 		}
 		if ((style & SWT.SHADOW_ETCHED_IN) != 0) {
-			GTK.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_ETCHED_IN);
+			GTK3.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_ETCHED_IN);
 		}
 		if ((style & SWT.SHADOW_ETCHED_OUT) != 0) {
-			GTK.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_ETCHED_OUT);
+			GTK3.gtk_frame_set_shadow_type (handle, GTK.GTK_SHADOW_ETCHED_OUT);
 		}
 	}
 
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 634d818..35a8e06 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
@@ -288,11 +288,11 @@
 		if (frameHandle == 0) error (SWT.ERROR_NO_HANDLES);
 		if (GTK.GTK4) {
 			OS.swt_fixed_add(fixedHandle, frameHandle);
-			GTK.gtk_frame_set_child(frameHandle, handle);
+			GTK4.gtk_frame_set_child(frameHandle, handle);
 		} else {
 			GTK3.gtk_container_add (fixedHandle, frameHandle);
 			GTK3.gtk_container_add (frameHandle, handle);
-			GTK.gtk_frame_set_shadow_type (frameHandle, GTK.GTK_SHADOW_ETCHED_IN);
+			GTK3.gtk_frame_set_shadow_type (frameHandle, GTK.GTK_SHADOW_ETCHED_IN);
 		}
 	} else {
 		if (GTK.GTK4) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
index 4933383..c6cc144 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ScrollBar.java
@@ -19,6 +19,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * Instances of this class are selectable user interface
@@ -606,7 +607,7 @@
 	if (GTK.GTK4) {
 		//TODO: GTK4 change-value moved to gtk_scroll_child in Composite, event-after
 
-		long clickGesture = GTK.gtk_gesture_click_new();
+		long clickGesture = GTK4.gtk_gesture_click_new();
 		GTK.gtk_widget_add_controller(handle, clickGesture);
 		OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 	} else {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
index 3afd040..569219f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
@@ -942,23 +942,23 @@
 	}
 	if (GTK.GTK4) {
 		OS.g_signal_connect_closure (shellHandle, OS.close_request, display.getClosure (CLOSE_REQUEST), false);
-		long keyController = GTK.gtk_event_controller_key_new();
+		long keyController = GTK4.gtk_event_controller_key_new();
 		GTK.gtk_widget_add_controller(shellHandle, keyController);
 		GTK.gtk_event_controller_set_propagation_phase(keyController, GTK.GTK_PHASE_TARGET);
 		OS.g_signal_connect (keyController, OS.key_pressed, display.keyPressReleaseProc, KEY_PRESSED);
 
-		long focusController = GTK.gtk_event_controller_focus_new();
+		long focusController = GTK4.gtk_event_controller_focus_new();
 		GTK.gtk_widget_add_controller(shellHandle, focusController);
 		OS.g_signal_connect (focusController, OS.enter, display.focusProc, FOCUS_IN);
 		OS.g_signal_connect (focusController, OS.leave, display.focusProc, FOCUS_OUT);
 
-		long enterLeaveController = GTK.gtk_event_controller_motion_new();
+		long enterLeaveController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_widget_add_controller(shellHandle, enterLeaveController);
 
 		long enterMotionAddress = display.enterMotionScrollCallback.getAddress();
 		OS.g_signal_connect (enterLeaveController, OS.enter, enterMotionAddress, ENTER);
 		if (isCustomResize()) {
-			long motionController = GTK.gtk_event_controller_motion_new();
+			long motionController = GTK4.gtk_event_controller_motion_new();
 			GTK.gtk_widget_add_controller(shellHandle, motionController);
 			GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
index 3b4f5f4..c80aa58 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java
@@ -225,7 +225,7 @@
 		return new Point(trim.width, trim.height);
 	} else {
 		GTK.gtk_widget_realize (handle);
-		long layout = GTK.gtk_entry_get_layout (handle);
+		long layout = GTK3.gtk_entry_get_layout (handle);
 		long hAdjustment = GTK.gtk_spin_button_get_adjustment (handle);
 		double upper = GTK.gtk_adjustment_get_upper (hAdjustment);
 		int digits = GTK.gtk_spin_button_get_digits (handle);
@@ -316,7 +316,7 @@
 		long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
 		GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 	} else {
-		GTK.gtk_editable_copy_clipboard(handle);
+		GTK3.gtk_editable_copy_clipboard(handle);
 	}
 }
 
@@ -363,7 +363,7 @@
 		long textHandle = GTK.gtk_widget_get_first_child(entryHandle);
 		GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 	} else {
-		GTK.gtk_editable_cut_clipboard(handle);
+		GTK3.gtk_editable_cut_clipboard(handle);
 	}
 }
 
@@ -563,7 +563,7 @@
 		long bufferHandle = GTK4.gtk_text_get_buffer(entryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
-		stringPtr = GTK.gtk_entry_get_text(handle);
+		stringPtr = GTK3.gtk_entry_get_text(handle);
 	}
 	if (stringPtr == 0) return "";
 
@@ -633,7 +633,7 @@
 		long bufferHandle = GTK4.gtk_text_get_buffer(entryHandle);
 		stringPtr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 	} else {
-		stringPtr = GTK.gtk_entry_get_text(handle);
+		stringPtr = GTK3.gtk_entry_get_text(handle);
 	}
 
 	int length = C.strlen(stringPtr);
@@ -720,7 +720,7 @@
 @Override
 long gtk_delete_text (long widget, long start_pos, long end_pos) {
 	if (!hooks (SWT.Verify) && !filters (SWT.Verify)) return 0;
-	long ptr = GTK.gtk_entry_get_text (GTK.GTK4 ? entryHandle : handle);
+	long ptr = GTK3.gtk_entry_get_text (GTK.GTK4 ? entryHandle : handle);
 	if (end_pos == -1) end_pos = OS.g_utf8_strlen (ptr, -1);
 	int start = (int)OS.g_utf8_offset_to_utf16_offset (ptr, start_pos);
 	int end = (int)OS.g_utf8_offset_to_utf16_offset (ptr, end_pos);
@@ -764,7 +764,7 @@
 	String oldText = new String (Converter.mbcsToWcs (buffer));
 	int [] pos = new int [1];
 	C.memmove (pos, position, 4);
-	long ptr = GTK.gtk_entry_get_text (GTK.GTK4 ? entryHandle : handle);
+	long ptr = GTK3.gtk_entry_get_text (GTK.GTK4 ? entryHandle : handle);
 	if (pos [0] == -1) pos [0] = (int)OS.g_utf8_strlen (ptr, -1);
 	int start = (int)OS.g_utf16_pointer_to_offset (ptr, pos [0]);
 	String newText = verifyText (oldText, start, start);
@@ -886,7 +886,7 @@
  */
 public void paste () {
 	checkWidget ();
-	GTK.gtk_editable_paste_clipboard (GTK.GTK4? entryHandle : handle);
+	GTK3.gtk_editable_paste_clipboard (GTK.GTK4? entryHandle : handle);
 }
 
 @Override
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
index 6913a99..0370a0c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java
@@ -18,6 +18,7 @@
 import org.eclipse.swt.graphics.*;
 import org.eclipse.swt.internal.*;
 import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk4.*;
 
 /**
  * Instances of this class represent a selectable user interface object
@@ -237,7 +238,7 @@
 	super.hookEvents ();
 	if (labelHandle != 0) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.getClosure (MNEMONIC_ACTIVATE), false);
 	if (GTK.GTK4) {
-		long motionController = GTK.gtk_event_controller_motion_new();
+		long motionController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_widget_add_controller(handle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
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 9df332a..8979767 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
@@ -186,7 +186,7 @@
 		}
 	}
 	if (DISABLE_EMOJI && GTK.GTK_VERSION >= OS.VERSION(3, 22, 20)) {
-	    GTK.gtk_entry_set_input_hints(handle, GTK.GTK_INPUT_HINT_NO_EMOJI);
+	    GTK4.gtk_entry_set_input_hints(handle, GTK.GTK_INPUT_HINT_NO_EMOJI);
 	}
 }
 
@@ -237,7 +237,7 @@
 		if (GTK.GTK4) {
 			OS.swt_fixed_add(fixedHandle, handle);
 			textHandle = GTK.gtk_widget_get_first_child(handle);
-			bufferHandle = GTK.gtk_entry_get_buffer(handle);
+			bufferHandle = GTK4.gtk_entry_get_buffer(handle);
 		} else {
 			GTK.gtk_widget_set_has_window(fixedHandle, true);
 			GTK3.gtk_container_add(fixedHandle, handle);
@@ -302,7 +302,7 @@
 	}
 	imContext = OS.imContextLast();
 	if ((style & SWT.SINGLE) != 0) {
-		GTK.gtk_entry_set_width_chars(handle, 1);
+		GTK3.gtk_entry_set_width_chars(handle, 1);
 	}
 	// In GTK 3 font description is inherited from parent widget which is not how SWT has always worked,
 	// reset to default font to get the usual behavior
@@ -522,7 +522,7 @@
 				separator [0] = segmentsChars [i];
 			}
 			byte [] buffer = Converter.wcsToMbcs (separator, false);
-			long ptr = GTK.gtk_entry_get_text (handle);
+			long ptr = GTK3.gtk_entry_get_text (handle);
 			pos [0] = (int)OS.g_utf16_offset_to_utf8_offset (ptr, pos [0]);
 			GTK.gtk_editable_insert_text (handle, buffer, buffer.length, pos);
 		}
@@ -559,7 +559,7 @@
 		OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED);
 		if (applyText) {
 			OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_TEXT);
-			long ptr = GTK.gtk_entry_get_text (handle);
+			long ptr = GTK3.gtk_entry_get_text (handle);
 			int start, end;
 			for (int i = 0; i < nSegments; i++) {
 				start = (int)OS.g_utf16_offset_to_utf8_offset (ptr, segments[i]);
@@ -619,7 +619,7 @@
 	int[] w = new int [1], h = new int [1];
 	if ((style & SWT.SINGLE) != 0) {
 		GTK.gtk_widget_realize (handle);
-		long layout = GTK.gtk_entry_get_layout (handle);
+		long layout = GTK3.gtk_entry_get_layout (handle);
 		OS.pango_layout_get_pixel_size (layout, w, h);
 	} else {
 		byte [] start =  new byte [ITER_SIZEOF], end  =  new byte [ITER_SIZEOF];
@@ -733,7 +733,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_widget_activate_action(textHandle, OS.action_copy_clipboard, null);
 		} else {
-			GTK.gtk_editable_copy_clipboard(handle);
+			GTK3.gtk_editable_copy_clipboard(handle);
 		}
 	} else {
 		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
@@ -761,7 +761,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_widget_activate_action(textHandle, OS.action_cut_clipboard, null);
 		} else {
-			GTK.gtk_editable_cut_clipboard(handle);
+			GTK3.gtk_editable_cut_clipboard(handle);
 		}
 	} else {
 		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
@@ -938,10 +938,10 @@
 	checkWidget ();
 	if ((style & SWT.SINGLE) != 0) {
 		int index = GTK.gtk_editable_get_position (handle);
-		index = GTK.gtk_entry_text_index_to_layout_index (handle, index);
+		index = GTK3.gtk_entry_text_index_to_layout_index (handle, index);
 		int [] offset_x = new int [1], offset_y = new int [1];
-		GTK.gtk_entry_get_layout_offsets (handle, offset_x, offset_y);
-		long layout = GTK.gtk_entry_get_layout (handle);
+		GTK3.gtk_entry_get_layout_offsets (handle, offset_x, offset_y);
+		long layout = GTK3.gtk_entry_get_layout (handle);
 		PangoRectangle pos = new PangoRectangle ();
 		OS.pango_layout_index_to_pos (layout, index, pos);
 		int x = offset_x [0] + OS.PANGO_PIXELS (pos.x) - getBorderWidthInPixels ();
@@ -977,7 +977,7 @@
 	checkWidget ();
 	int result;
 	if ((style & SWT.SINGLE) != 0)  {
-		long ptr = GTK.gtk_entry_get_text (handle);
+		long ptr = GTK3.gtk_entry_get_text (handle);
 		result = (int)OS.g_utf8_offset_to_utf16_offset (ptr, GTK.gtk_editable_get_position (handle));
 	} else {
 		byte [] position = new byte [ITER_SIZEOF];
@@ -1006,7 +1006,7 @@
 	checkWidget ();
 	int result;
 	if ((style & SWT.SINGLE) != 0) {
-		long ptr = GTK.gtk_entry_get_text (handle);
+		long ptr = GTK3.gtk_entry_get_text (handle);
 		result = (int)OS.g_utf16_strlen (ptr, -1);
 	} else {
 		byte [] startIter =  new byte [ITER_SIZEOF];
@@ -1181,7 +1181,7 @@
 	if ((style & SWT.SINGLE) != 0) {
 		int [] index = new int [1];
 		int [] trailing = new int [1];
-		long layout = GTK.gtk_entry_get_layout (handle);
+		long layout = GTK3.gtk_entry_get_layout (handle);
 		OS.pango_layout_xy_to_index (layout, point.x * OS.PANGO_SCALE, point.y * OS.PANGO_SCALE, index, trailing);
 		long ptr = OS.pango_layout_get_text (layout);
 		position = (int)OS.g_utf16_pointer_to_offset (ptr, ptr + index[0]) + trailing[0];
@@ -1222,7 +1222,7 @@
 		int [] start = new int [1];
 		int [] end = new int [1];
 		GTK.gtk_editable_get_selection_bounds (handle, start, end);
-		long ptr = GTK.gtk_entry_get_text (handle);
+		long ptr = GTK3.gtk_entry_get_text (handle);
 		start[0] = (int)OS.g_utf8_offset_to_utf16_offset (ptr, start[0]);
 		end[0] = (int)OS.g_utf8_offset_to_utf16_offset (ptr, end[0]);
 		selection = new Point (start [0], end [0]);
@@ -1390,7 +1390,7 @@
 		if (GTK.GTK4) {
 			address = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
-			address = GTK.gtk_entry_get_text(handle);
+			address = GTK3.gtk_entry_get_text(handle);
 		}
 	} else {
 		byte [] start =  new byte [ITER_SIZEOF];
@@ -1667,7 +1667,7 @@
 @Override
 long gtk_delete_text (long widget, long start_pos, long end_pos) {
 	if (!hooks (SWT.Verify) && !filters (SWT.Verify)) return 0;
-	long ptr = GTK.gtk_entry_get_text (handle);
+	long ptr = GTK3.gtk_entry_get_text (handle);
 	if (end_pos == -1) end_pos = OS.g_utf8_strlen (ptr, -1);
 	int start = (int)OS.g_utf8_offset_to_utf16_offset (ptr, start_pos);
 	int end = (int)OS.g_utf8_offset_to_utf16_offset (ptr, end_pos);
@@ -1787,7 +1787,7 @@
 	String oldText = new String (Converter.mbcsToWcs (buffer));
 	int [] pos = new int [1];
 	C.memmove (pos, position, 4);
-	long ptr = GTK.gtk_entry_get_text (handle);
+	long ptr = GTK3.gtk_entry_get_text (handle);
 	if (pos [0] == -1) pos [0] = (int)OS.g_utf8_strlen (ptr, -1);
 	/* Use the selection when the text was deleted */
 	int start = pos [0], end = pos [0];
@@ -2094,7 +2094,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_widget_activate_action(textHandle, OS.action_paste_clipboard, null);
 		} else {
-			GTK.gtk_editable_paste_clipboard (handle);
+			GTK3.gtk_editable_paste_clipboard (handle);
 		}
 	} else {
 		long clipboard = GTK.GTK4 ? GDK.gdk_display_get_clipboard(GDK.gdk_display_get_default()) : GTK3.gtk_clipboard_get (GDK.GDK_NONE);
@@ -2472,7 +2472,7 @@
 	checkWidget ();
 	start = translateOffset (start);
 	if ((style & SWT.SINGLE) != 0) {
-		long ptr = GTK.gtk_entry_get_text (handle);
+		long ptr = GTK3.gtk_entry_get_text (handle);
 		start = (int)OS.g_utf16_offset_to_utf8_offset (ptr, start);
 		GTK.gtk_editable_set_position (handle, start);
 	} else {
@@ -2522,7 +2522,7 @@
 		if (GTK.GTK4) {
 			ptr = GTK.gtk_entry_buffer_get_text(bufferHandle);
 		} else {
-			ptr = GTK.gtk_entry_get_text (handle);
+			ptr = GTK3.gtk_entry_get_text (handle);
 		}
 		start = (int)OS.g_utf16_offset_to_utf8_offset (ptr, start);
 		end = (int)OS.g_utf16_offset_to_utf8_offset (ptr, end);
@@ -2699,7 +2699,7 @@
 		if (GTK.GTK4) {
 			GTK.gtk_entry_buffer_set_text(bufferHandle, buffer, -1);
 		} else {
-			GTK.gtk_entry_set_text(handle, buffer);
+			GTK3.gtk_entry_set_text(handle, buffer);
 		}
 		OS.g_signal_handlers_unblock_matched(handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED);
 		OS.g_signal_handlers_unblock_matched(handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_TEXT);
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 5a93bbc..81cec09 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
@@ -845,7 +845,7 @@
 		if (GTK.GTK4) {
 			eventHandle = GTK.gtk_widget_get_first_child(handle);
 			if (arrowHandle != 0) {
-				long clickGesture = GTK.gtk_gesture_click_new();
+				long clickGesture = GTK4.gtk_gesture_click_new();
 				OS.g_signal_connect(clickGesture, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 				GTK.gtk_widget_add_controller(arrowHandle, clickGesture);
 			}
@@ -857,14 +857,14 @@
 	}
 
 	if (GTK.GTK4) {
-		long focusController = GTK.gtk_event_controller_focus_new();
+		long focusController = GTK4.gtk_event_controller_focus_new();
 		GTK.gtk_widget_add_controller(eventHandle, focusController);
 		GTK.gtk_event_controller_set_propagation_phase(focusController, GTK.GTK_PHASE_TARGET);
 
 		OS.g_signal_connect (focusController, OS.enter, display.focusProc, FOCUS_IN);
 		OS.g_signal_connect (focusController, OS.leave, display.focusProc, FOCUS_OUT);
 
-		long motionController = GTK.gtk_event_controller_motion_new();
+		long motionController = GTK4.gtk_event_controller_motion_new();
 		GTK.gtk_widget_add_controller(eventHandle, motionController);
 		GTK.gtk_event_controller_set_propagation_phase(motionController, GTK.GTK_PHASE_TARGET);
 
@@ -896,7 +896,7 @@
 	GTK.gtk_widget_add_events (eventHandle, mask);
 	if (GTK.GTK4) {
 		//TODO: event-after
-		long clickController = GTK.gtk_gesture_click_new();
+		long clickController = GTK4.gtk_gesture_click_new();
 		GTK.gtk_widget_add_controller(eventHandle, clickController);
 		OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 	} else {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
index d65f5d3..d584304 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolTip.java
@@ -601,7 +601,7 @@
 		OS.g_signal_connect_closure_by_id (handle, display.signalIds [EXPOSE_EVENT_INVERSE], 0, display.getClosure (EXPOSE_EVENT_INVERSE), true);
 
 		if (GTK.GTK4) {
-			long clickController = GTK.gtk_gesture_click_new();
+			long clickController = GTK4.gtk_gesture_click_new();
 			GTK.gtk_widget_add_controller(handle, clickController);
 			OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
 		} else {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
index a345a92..2922fcd 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java
@@ -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 column in a tree widget.
@@ -431,7 +432,7 @@
 	super.hookEvents();
 
 	if (GTK.GTK4) {
-		 long clickController = GTK.gtk_gesture_click_new();
+		 long clickController = GTK4.gtk_gesture_click_new();
 		 GTK.gtk_widget_add_controller(buttonHandle, clickController);
 		 GTK.gtk_event_controller_set_propagation_phase(clickController, GTK.GTK_PHASE_CAPTURE);
 		 OS.g_signal_connect(clickController, OS.pressed, display.gesturePressReleaseProc, GESTURE_PRESSED);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index 6ec0e52..d35cfcb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
@@ -2164,7 +2164,7 @@
 
 long enterMotionScrollProc(long controller, long handle, double x, double y, long user_data) {
 	long result = 0;
-	long event = GTK.gtk_event_controller_get_current_event(controller);
+	long event = GTK4.gtk_event_controller_get_current_event(controller);
 
 	switch ((int)user_data) {
 		case ENTER:
@@ -2186,7 +2186,7 @@
 
 long focusProc(long controller, long handle, long user_data) {
 	long result = 0;
-	long event = GTK.gtk_event_controller_get_current_event(controller);
+	long event = GTK4.gtk_event_controller_get_current_event(controller);
 
 	switch ((int)user_data) {
 		case FOCUS_IN:
@@ -2202,7 +2202,7 @@
 
 long keyPressReleaseProc(long controller, long handle, int keyval, int keycode, int state, long user_data) {
 	long result = 0;
-	long event = GTK.gtk_event_controller_get_current_event(controller);
+	long event = GTK4.gtk_event_controller_get_current_event(controller);
 
 	switch ((int)user_data) {
 		case KEY_PRESSED:
@@ -2217,7 +2217,7 @@
 }
 
 void gesturePressReleaseProc(long gesture, int n_press, double x, double y, long user_data) {
-	long event = GTK.gtk_event_controller_get_current_event(gesture);
+	long event = GTK4.gtk_event_controller_get_current_event(gesture);
 
 	switch ((int)user_data) {
 		case GESTURE_PRESSED:
@@ -2231,7 +2231,7 @@
 
 long leaveProc(long controller, long handle, long user_data) {
 	long result = 0;
-	long event = GTK.gtk_event_controller_get_current_event(controller);
+	long event = GTK4.gtk_event_controller_get_current_event(controller);
 
 	switch ((int)user_data) {
 		case LEAVE: