From 469d47091c92d5dd0b49b1dd0f9b6fd5dcf2b781 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sat, 28 Oct 2023 09:21:04 +0200 Subject: [PATCH] Window: fix issue with multi Activity support each Activity has its own Window object. Therefore the check if the contentView has changed needs to be in the common native window --- src/api-impl-jni/android_view_Window.c | 6 +++++- src/api-impl/android/view/Window.java | 8 +++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/api-impl-jni/android_view_Window.c b/src/api-impl-jni/android_view_Window.c index e0254c9c..7b633a65 100644 --- a/src/api-impl-jni/android_view_Window.c +++ b/src/api-impl-jni/android_view_Window.c @@ -7,7 +7,11 @@ JNIEXPORT void JNICALL Java_android_view_Window_set_1widget_1as_1root(JNIEnv *env, jobject this, jlong window, jlong widget) { - gtk_window_set_child(GTK_WINDOW(_PTR(window)), gtk_widget_get_parent(GTK_WIDGET(_PTR(widget)))); + GtkWindow *gtk_window = GTK_WINDOW(_PTR(window)); + GtkWidget *gtk_widget = gtk_widget_get_parent(GTK_WIDGET(_PTR(widget))); + if (gtk_widget != gtk_window_get_child(gtk_window)) { + gtk_window_set_child(gtk_window, gtk_widget); + } } // FIXME put this in a header file diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java index 240f6599..83a3b546 100644 --- a/src/api-impl/android/view/Window.java +++ b/src/api-impl/android/view/Window.java @@ -41,11 +41,9 @@ public class Window { } public void setContentView(View view) { - if (view != contentView) { - contentView = view; - view.onAttachedToWindow(); - set_widget_as_root(native_window, view.widget); - } + contentView = view; + view.onAttachedToWindow(); + set_widget_as_root(native_window, view.widget); } public View getDecorView() {