From fb82eabd2c76be627bfbb1d4ee64fa0802309d9d Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 19 Jul 2024 19:32:59 +0200 Subject: [PATCH] replace deprecated GtkDialog with GtkWindow --- src/api-impl-jni/app/android_app_AlertDialog.c | 15 +++++++++------ src/api-impl-jni/app/android_app_Dialog.c | 8 ++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/api-impl-jni/app/android_app_AlertDialog.c b/src/api-impl-jni/app/android_app_AlertDialog.c index 94c4b57f..36087afc 100644 --- a/src/api-impl-jni/app/android_app_AlertDialog.c +++ b/src/api-impl-jni/app/android_app_AlertDialog.c @@ -6,9 +6,9 @@ JNIEXPORT void JNICALL Java_android_app_AlertDialog_nativeSetMessage(JNIEnv *env, jobject this, jlong ptr, jstring message) { - GtkDialog *dialog = GTK_DIALOG(_PTR(ptr)); + GtkWindow *dialog = GTK_WINDOW(_PTR(ptr)); const char* nativeMessage = (*env)->GetStringUTFChars(env, message, NULL); - GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); + GtkWidget *content_area = gtk_window_get_child(dialog); GtkWidget *label = gtk_label_new(nativeMessage); gtk_label_set_wrap(GTK_LABEL(label), TRUE); gtk_box_append(GTK_BOX(content_area), label); @@ -16,9 +16,12 @@ JNIEXPORT void JNICALL Java_android_app_AlertDialog_nativeSetMessage(JNIEnv *env } JNIEXPORT void JNICALL Java_android_app_AlertDialog_nativeSetButton(JNIEnv *env, jobject this, jlong ptr, jint id, jstring text) { - GtkDialog *dialog = GTK_DIALOG(_PTR(ptr)); + GtkWindow *dialog = GTK_WINDOW(_PTR(ptr)); + GtkWidget *content_area = gtk_window_get_child(dialog); const char* nativeText = (*env)->GetStringUTFChars(env, text, NULL); - gtk_dialog_add_button(dialog, nativeText, id); + GtkWidget *button = gtk_button_new_with_label(nativeText); + g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_destroy), dialog); + gtk_box_append(GTK_BOX(content_area), button); (*env)->ReleaseStringUTFChars(env, text, nativeText); } @@ -62,7 +65,7 @@ static void activate_cb(GtkListView *list, guint position, struct click_callback } JNIEXPORT void JNICALL Java_android_app_AlertDialog_nativeSetItems(JNIEnv *env, jobject this, jlong ptr, jobjectArray items, jobject on_click) { - GtkDialog *dialog = GTK_DIALOG(_PTR(ptr)); + GtkWindow *dialog = GTK_WINDOW(_PTR(ptr)); GListStore *store = g_list_store_new(list_entry_get_type()); int stringCount = (*env)->GetArrayLength(env, items); @@ -78,7 +81,7 @@ JNIEXPORT void JNICALL Java_android_app_AlertDialog_nativeSetItems(JNIEnv *env, GtkWidget *list = gtk_list_view_new(GTK_SELECTION_MODEL(gtk_single_selection_new(G_LIST_MODEL(store))), factory); gtk_list_view_set_single_click_activate(GTK_LIST_VIEW(list), TRUE); - GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); + GtkWidget *content_area = gtk_window_get_child(dialog); gtk_box_append(GTK_BOX(content_area), list); JavaVM *jvm; diff --git a/src/api-impl-jni/app/android_app_Dialog.c b/src/api-impl-jni/app/android_app_Dialog.c index 4c7cc79b..5aace0f7 100644 --- a/src/api-impl-jni/app/android_app_Dialog.c +++ b/src/api-impl-jni/app/android_app_Dialog.c @@ -16,8 +16,9 @@ static gboolean on_close_request(GtkWidget *dialog, jobject jobj) JNIEXPORT jlong JNICALL Java_android_app_Dialog_nativeInit(JNIEnv *env, jobject this) { - GtkWidget *dialog = gtk_dialog_new(); + GtkWidget *dialog = gtk_window_new(); gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 500); + gtk_window_set_child(GTK_WINDOW(dialog), gtk_box_new(GTK_ORIENTATION_VERTICAL, 1)); g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_window_destroy), dialog); g_signal_connect(GTK_WINDOW(dialog), "close-request", G_CALLBACK(on_close_request), _REF(this)); return _INTPTR(g_object_ref(dialog)); @@ -32,11 +33,10 @@ JNIEXPORT void JNICALL Java_android_app_Dialog_nativeSetTitle(JNIEnv *env, jobje } JNIEXPORT void JNICALL Java_android_app_Dialog_nativeSetContentView(JNIEnv *env, jobject this, jlong ptr, jlong widget_ptr) { - GtkDialog *dialog = GTK_DIALOG(_PTR(ptr)); + GtkWindow *dialog = GTK_WINDOW(_PTR(ptr)); GtkWidget *widget = GTK_WIDGET(_PTR(widget_ptr)); - GtkWidget *content_area = gtk_dialog_get_content_area(dialog); - gtk_box_append(GTK_BOX(content_area), gtk_widget_get_parent(widget)); + gtk_window_set_child(dialog, gtk_widget_get_parent(widget)); } JNIEXPORT void JNICALL Java_android_app_Dialog_nativeShow(JNIEnv *env, jobject this, jlong ptr)