Bug 572200 - [GTK4] gtk_window_set_icon_list removed from GTK4
- Moved gtk_window_set_icon_list to GTK3.java
- Set icon_list of GtkWindow manually through gdk_toplevel_set_icon
- Moved GdkToplevel functions (except gdk_toplevel_present due to
dependency on struct in os.h) from GDK to GTK4
Change-Id: I3a8f4d779aea332bee3050c94797e893be2d9b88
Signed-off-by: Paul D'Pong <sdamrong@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 f943ffb..985d77e 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
@@ -400,3 +400,13 @@
}
#endif
+#ifndef NO_gtk_1window_1set_1icon_1list
+JNIEXPORT void JNICALL GTK3_NATIVE(gtk_1window_1set_1icon_1list)
+ (JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+ GTK3_NATIVE_ENTER(env, that, gtk_1window_1set_1icon_1list_FUNC);
+ gtk_window_set_icon_list((GtkWindow *)arg0, (GList *)arg1);
+ GTK3_NATIVE_EXIT(env, that, gtk_1window_1set_1icon_1list_FUNC);
+}
+#endif
+
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.c
index 6078411..c43aca5 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
@@ -52,6 +52,7 @@
"gtk_1init_1check",
"gtk_1main_1do_1event",
"gtk_1rgb_1to_1hsv",
+ "gtk_1window_1set_1icon_1list",
};
#define NATIVE_FUNCTION_COUNT sizeof(GTK3_nativeFunctionNames) / sizeof(char*)
int GTK3_nativeFunctionCount = NATIVE_FUNCTION_COUNT;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk3_stats.h
index a25d88c..84d73e0 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
@@ -62,4 +62,5 @@
gtk_1init_1check_FUNC,
gtk_1main_1do_1event_FUNC,
gtk_1rgb_1to_1hsv_FUNC,
+ gtk_1window_1set_1icon_1list_FUNC,
} GTK3_FUNCS;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/gtk4.c
index d18253c..f6932a6 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
@@ -23,6 +23,50 @@
#define GTK4_NATIVE(func) Java_org_eclipse_swt_internal_gtk4_GTK4_##func
#endif
+#ifndef NO_gdk_1toplevel_1focus
+JNIEXPORT void JNICALL GTK4_NATIVE(gdk_1toplevel_1focus)
+ (JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+ GTK4_NATIVE_ENTER(env, that, gdk_1toplevel_1focus_FUNC);
+ gdk_toplevel_focus((GdkToplevel *)arg0, arg1);
+ GTK4_NATIVE_EXIT(env, that, gdk_1toplevel_1focus_FUNC);
+}
+#endif
+
+#ifndef NO_gdk_1toplevel_1get_1state
+JNIEXPORT jint JNICALL GTK4_NATIVE(gdk_1toplevel_1get_1state)
+ (JNIEnv *env, jclass that, jlong arg0)
+{
+ jint rc = 0;
+ GTK4_NATIVE_ENTER(env, that, gdk_1toplevel_1get_1state_FUNC);
+ rc = (jint)gdk_toplevel_get_state((GdkToplevel *)arg0);
+ GTK4_NATIVE_EXIT(env, that, gdk_1toplevel_1get_1state_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gdk_1toplevel_1lower
+JNIEXPORT jboolean JNICALL GTK4_NATIVE(gdk_1toplevel_1lower)
+ (JNIEnv *env, jclass that, jlong arg0)
+{
+ jboolean rc = 0;
+ GTK4_NATIVE_ENTER(env, that, gdk_1toplevel_1lower_FUNC);
+ rc = (jboolean)gdk_toplevel_lower((GdkToplevel *)arg0);
+ GTK4_NATIVE_EXIT(env, that, gdk_1toplevel_1lower_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gdk_1toplevel_1set_1icon_1list
+JNIEXPORT void JNICALL GTK4_NATIVE(gdk_1toplevel_1set_1icon_1list)
+ (JNIEnv *env, jclass that, jlong arg0, jlong arg1)
+{
+ GTK4_NATIVE_ENTER(env, that, gdk_1toplevel_1set_1icon_1list_FUNC);
+ gdk_toplevel_set_icon_list((GdkToplevel *)arg0, (GList *)arg1);
+ GTK4_NATIVE_EXIT(env, that, gdk_1toplevel_1set_1icon_1list_FUNC);
+}
+#endif
+
#ifndef NO_gtk_1box_1append
JNIEXPORT void JNICALL GTK4_NATIVE(gtk_1box_1append)
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
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 2649b72..a1b8607 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
@@ -21,6 +21,10 @@
#ifdef NATIVE_STATS
char * GTK4_nativeFunctionNames[] = {
+ "gdk_1toplevel_1focus",
+ "gdk_1toplevel_1get_1state",
+ "gdk_1toplevel_1lower",
+ "gdk_1toplevel_1set_1icon_1list",
"gtk_1box_1append",
"gtk_1box_1insert_1child_1after",
"gtk_1box_1prepend",
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 23bf478..b25dda9 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
@@ -31,6 +31,10 @@
#endif
typedef enum {
+ gdk_1toplevel_1focus_FUNC,
+ gdk_1toplevel_1get_1state_FUNC,
+ gdk_1toplevel_1lower_FUNC,
+ gdk_1toplevel_1set_1icon_1list_FUNC,
gtk_1box_1append_FUNC,
gtk_1box_1insert_1child_1after_FUNC,
gtk_1box_1prepend_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 6a7cf4f..3c08574 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
@@ -2696,28 +2696,6 @@
G_GNUC_END_IGNORE_DEPRECATIONS
#endif
-#ifndef NO_gdk_1toplevel_1focus
-JNIEXPORT void JNICALL GDK_NATIVE(gdk_1toplevel_1focus)
- (JNIEnv *env, jclass that, jlong arg0, jint arg1)
-{
- GDK_NATIVE_ENTER(env, that, gdk_1toplevel_1focus_FUNC);
- gdk_toplevel_focus((GdkToplevel *)arg0, arg1);
- GDK_NATIVE_EXIT(env, that, gdk_1toplevel_1focus_FUNC);
-}
-#endif
-
-#ifndef NO_gdk_1toplevel_1get_1state
-JNIEXPORT jint JNICALL GDK_NATIVE(gdk_1toplevel_1get_1state)
- (JNIEnv *env, jclass that, jlong arg0)
-{
- jint rc = 0;
- GDK_NATIVE_ENTER(env, that, gdk_1toplevel_1get_1state_FUNC);
- rc = (jint)gdk_toplevel_get_state((GdkToplevel *)arg0);
- GDK_NATIVE_EXIT(env, that, gdk_1toplevel_1get_1state_FUNC);
- return rc;
-}
-#endif
-
#ifndef NO_gdk_1toplevel_1layout_1new
JNIEXPORT jlong JNICALL GDK_NATIVE(gdk_1toplevel_1layout_1new)
(JNIEnv *env, jclass that, jint arg0, jint arg1)
@@ -2738,18 +2716,6 @@
}
#endif
-#ifndef NO_gdk_1toplevel_1lower
-JNIEXPORT jboolean JNICALL GDK_NATIVE(gdk_1toplevel_1lower)
- (JNIEnv *env, jclass that, jlong arg0)
-{
- jboolean rc = 0;
- GDK_NATIVE_ENTER(env, that, gdk_1toplevel_1lower_FUNC);
- rc = (jboolean)gdk_toplevel_lower((GdkToplevel *)arg0);
- GDK_NATIVE_EXIT(env, that, gdk_1toplevel_1lower_FUNC);
- return rc;
-}
-#endif
-
#ifndef NO_gdk_1toplevel_1present
JNIEXPORT jboolean JNICALL GDK_NATIVE(gdk_1toplevel_1present)
(JNIEnv *env, jclass that, jlong arg0, jint arg1, jint arg2, jlong arg3)
@@ -14269,16 +14235,6 @@
}
#endif
-#ifndef NO_gtk_1window_1set_1icon_1list
-JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1icon_1list)
- (JNIEnv *env, jclass that, jlong arg0, jlong arg1)
-{
- GTK_NATIVE_ENTER(env, that, gtk_1window_1set_1icon_1list_FUNC);
- gtk_window_set_icon_list((GtkWindow *)arg0, (GList *)arg1);
- GTK_NATIVE_EXIT(env, that, gtk_1window_1set_1icon_1list_FUNC);
-}
-#endif
-
#ifndef NO_gtk_1window_1set_1icon_1name
JNIEXPORT void JNICALL GTK_NATIVE(gtk_1window_1set_1icon_1name)
(JNIEnv *env, jclass that, jlong arg0, jlong arg1)
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 9a0f50a..a3aee9d 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
@@ -503,9 +503,6 @@
#define NO_gdk_1surface_1set_1opaque_1region
// No GdkToplevel on GTK3
-#define NO_gdk_1toplevel_1focus
-#define NO_gdk_1toplevel_1get_1state
-#define NO_gdk_1toplevel_1lower
#define NO_gdk_1toplevel_1present
// No GdkClipboard on GTK3
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 f31454f..3e17b05 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
@@ -198,10 +198,7 @@
"gdk_1texture_1new_1for_1pixbuf",
"gdk_1texture_1new_1from_1file",
"gdk_1threads_1leave",
- "gdk_1toplevel_1focus",
- "gdk_1toplevel_1get_1state",
"gdk_1toplevel_1layout_1new",
- "gdk_1toplevel_1lower",
"gdk_1toplevel_1present",
"gdk_1unicode_1to_1keyval",
"gdk_1utf8_1to_1string_1target",
@@ -1068,7 +1065,6 @@
"gtk_1window_1set_1default_1widget",
"gtk_1window_1set_1destroy_1with_1parent",
"gtk_1window_1set_1geometry_1hints",
- "gtk_1window_1set_1icon_1list",
"gtk_1window_1set_1icon_1name",
"gtk_1window_1set_1keep_1above",
"gtk_1window_1set_1modal",
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 06e3a41..9f5c0a3 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
@@ -208,10 +208,7 @@
gdk_1texture_1new_1for_1pixbuf_FUNC,
gdk_1texture_1new_1from_1file_FUNC,
gdk_1threads_1leave_FUNC,
- gdk_1toplevel_1focus_FUNC,
- gdk_1toplevel_1get_1state_FUNC,
gdk_1toplevel_1layout_1new_FUNC,
- gdk_1toplevel_1lower_FUNC,
gdk_1toplevel_1present_FUNC,
gdk_1unicode_1to_1keyval_FUNC,
gdk_1utf8_1to_1string_1target_FUNC,
@@ -1066,7 +1063,6 @@
gtk_1window_1set_1default_1widget_FUNC,
gtk_1window_1set_1destroy_1with_1parent_FUNC,
gtk_1window_1set_1geometry_1hints_FUNC,
- gtk_1window_1set_1icon_1list_FUNC,
gtk_1window_1set_1icon_1name_FUNC,
gtk_1window_1set_1keep_1above_FUNC,
gtk_1window_1set_1modal_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
index 85942d7..a30e29a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java
@@ -347,11 +347,6 @@
/* [GTK4 only, if-def'd in os.h] */
public static final native int gdk_surface_get_width(long surface);
/**
- * @param toplevel cast=(GdkToplevel *)
- */
- /* [GTK4 only, if-def'd in os.h] */
- public static final native int gdk_toplevel_get_state(long toplevel);
- /**
* @param window cast=(GdkWindow *)
*/
/* [GTK3 only, if-def'd in os.h] */
@@ -1103,9 +1098,6 @@
/** @param window cast=(GdkWindow *) */
/* [GTK3 only, if-def'd in os.h] */
public static final native void gdk_window_focus(long window, int timestamp);
- /** @param surface cast=(GdkToplevel *) */
- /* [GTK4 only, if-def'd in os.h] */
- public static final native void gdk_toplevel_focus(long surface, int timestamp);
/**
* @param window cast=(GdkWindow *)
* @param rect cast=(GdkRectangle *),flags=no_in
@@ -1197,9 +1189,6 @@
/** @param window cast=(GdkWindow *) */
/* [GTK3 only, if-def'd in os.h] */
public static final native void gdk_window_lower(long window);
- /** @param toplevel cast=(GdkToplevel *) */
- /* [GTK4 only, if-def'd in os.h] */
- public static final native boolean gdk_toplevel_lower(long toplevel);
/** @param window cast=(GdkWindow *) */
/* [GTK3 only, if-def'd in os.h] */
public static final native void gdk_window_raise(long window);
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 0a76e91..b511c50 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
@@ -3835,11 +3835,6 @@
public static final native long gtk_window_get_icon_list(long window);
/**
* @param window cast=(GtkWindow *)
- * @param list cast=(GList *)
- */
- public static final native void gtk_window_set_icon_list(long window, long list);
- /**
- * @param window cast=(GtkWindow *)
* @param attach_widget cast=(GtkWidget *)
*/
public static final native void gtk_window_set_attached_to(long window, long attach_widget);
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 a4dcc77..7d47351 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
@@ -179,4 +179,11 @@
public static final native long gtk_get_event_widget(long event);
/** @param event cast=(GdkEvent *) */
public static final native void gtk_main_do_event(long event);
+
+ /* GtkWindow */
+ /**
+ * @param window cast=(GtkWindow *)
+ * @param list cast=(GList *)
+ */
+ public static final native void gtk_window_set_icon_list(long window, long list);
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk4/GTK4.java
index 06692be..1087e58 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
@@ -113,4 +113,17 @@
/* GTK Initialization */
public static final native boolean gtk_init_check();
+
+ /* GdkToplevel */
+ /** @param toplevel cast=(GdkToplevel *) */
+ public static final native int gdk_toplevel_get_state(long toplevel);
+ /**
+ * @param toplevel cast=(GdkToplevel *)
+ * @param textures cast=(GList *)
+ */
+ public static final native void gdk_toplevel_set_icon_list(long toplevel, long textures);
+ /** @param toplevel cast=(GdkToplevel *) */
+ public static final native boolean gdk_toplevel_lower(long toplevel);
+ /** @param surface cast=(GdkToplevel *) */
+ public static final native void gdk_toplevel_focus(long surface, int timestamp);
}
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 9bbcffd..bd19251 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
@@ -6168,8 +6168,8 @@
if (above) {
//TODO: GTK4 no gdk_window_raise function. In GTK4, alternative may be gdk_toplevel_present
} else {
- if (enableSurface != 0) GDK.gdk_toplevel_lower (enableSurface);
- GDK.gdk_toplevel_lower (surface);
+ if (enableSurface != 0) GTK4.gdk_toplevel_lower (enableSurface);
+ GTK4.gdk_toplevel_lower (surface);
}
} else {
/* TODO: GTK4 no longer has ability for changing the Z-order of the windowing system directly.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
index 55738cb..0581dd8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Decorations.java
@@ -17,6 +17,8 @@
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.internal.*;
import org.eclipse.swt.internal.gtk.*;
+import org.eclipse.swt.internal.gtk3.*;
+import org.eclipse.swt.internal.gtk4.*;
/**
* Instances of this class provide the appearance and
@@ -179,23 +181,40 @@
sort (bestImages);
images = bestImages;
}
- long pixbufs = 0;
+
+ // Allocate GList of icons
+ long icon_list = 0;
if (images != null) {
- for (int i = 0; i < images.length; i++) {
- Image image = images [i];
- long pixbuf = ImageList.createPixbuf (image);
- pixbufs = OS.g_list_append (pixbufs, pixbuf);
+ for (Image image : images) {
+ long pixbuf = ImageList.createPixbuf(image);
+ if (GTK.GTK4) {
+ long texture = GDK.gdk_texture_new_for_pixbuf(pixbuf);
+ OS.g_object_unref(pixbuf);
+ icon_list = OS.g_list_append(icon_list, texture);
+ } else {
+ icon_list = OS.g_list_append(icon_list, pixbuf);
+ }
}
}
- GTK.gtk_window_set_icon_list (topHandle (), pixbufs);
- long [] data = new long [1];
- long temp = pixbufs;
- while (temp != 0) {
- C.memmove (data, temp, C.PTR_SIZEOF);
- OS.g_object_unref (data [0]);
- temp = OS.g_list_next (temp);
+
+ if (GTK.GTK4) {
+ /*
+ * Set texture list to window's surface. Can no longer
+ * use GtkWindow functions as they require a themed icon.
+ */
+ long surface = GTK.gtk_native_get_surface(topHandle());
+ GTK4.gdk_toplevel_set_icon_list(surface, icon_list);
+ } else {
+ GTK3.gtk_window_set_icon_list(topHandle(), icon_list);
}
- if (pixbufs != 0) OS.g_list_free (pixbufs);
+
+ // Release GList
+ long temp = icon_list;
+ while (temp != 0) {
+ OS.g_object_unref(OS.g_list_data(temp));
+ temp = OS.g_list_next(temp);
+ }
+ if (icon_list != 0) OS.g_list_free(icon_list);
}
void addMenu (Menu menu) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
index ab863c7..d03a9bd 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/MessageBox.java
@@ -163,6 +163,10 @@
// Copy parent's icon
if (parentHandle != 0) {
if (GTK.GTK4) {
+ /*
+ * TODO: This may not work as we are setting the icon list of the GtkWindow through
+ * GdkToplevel (which has no way of retrieving the icon list set. See bug 572200.
+ */
long iconName = GTK.gtk_window_get_icon_name(parentHandle);
if (iconName != 0) {
GTK.gtk_window_set_icon_name(handle, iconName);
@@ -170,7 +174,7 @@
} else {
long pixbufs = GTK.gtk_window_get_icon_list(parentHandle);
if (pixbufs != 0) {
- GTK.gtk_window_set_icon_list(handle, pixbufs);
+ GTK3.gtk_window_set_icon_list(handle, pixbufs);
OS.g_list_free (pixbufs);
}
}
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 1735f3d..bbb3537 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
@@ -628,7 +628,7 @@
}
} else {
if (GTK.GTK4) {
- GDK.gdk_toplevel_focus (gdkResource, display.lastUserEventTime);
+ GTK4.gdk_toplevel_focus (gdkResource, display.lastUserEventTime);
} else {
GDK.gdk_window_focus (gdkResource, display.lastUserEventTime);
}
@@ -1952,7 +1952,7 @@
long notifyState (long object, long arg0) {
// GTK4 equivalent of gtk_window_state_event
assert GTK.GTK4;
- int gdkSurfaceState = GDK.gdk_toplevel_get_state (object);
+ int gdkSurfaceState = GTK4.gdk_toplevel_get_state (object);
minimized = (gdkSurfaceState & GDK.GDK_SURFACE_STATE_MINIMIZED) != 0;
maximized = (gdkSurfaceState & GDK.GDK_SURFACE_STATE_MAXIMIZED) != 0;
fullScreen = (gdkSurfaceState & GDK.GDK_SURFACE_STATE_FULLSCREEN) != 0;