From ac2ab1443c0e9ea0a1930d31788db1c0eb1792f3 Mon Sep 17 00:00:00 2001 From: deepend Date: Wed, 25 Feb 2026 23:18:19 -0700 Subject: [PATCH] Added fe_apply_theme_to_toplevel() for: Standard GTK file chooser fallback dialog in src/fe-gtk/gtkutil.c Font chooser dialog in src/fe-gtk/setup.c Color chooser dialog in src/fe-gtk/setup.c About dialog in src/fe-gtk/menu.c --- src/fe-gtk/gtkutil.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/fe-gtk/gtkutil.c b/src/fe-gtk/gtkutil.c index ca8a47d7..a10a7c05 100644 --- a/src/fe-gtk/gtkutil.c +++ b/src/fe-gtk/gtkutil.c @@ -806,21 +806,25 @@ gtkutil_file_req (GtkWindow *parent, const char *title, void *callback, void *us if (flags & FRF_WRITE) { - dialog = gtk_file_chooser_dialog_new (title, NULL, - GTK_FILE_CHOOSER_ACTION_SAVE, - _("_Cancel"), GTK_RESPONSE_CANCEL, - _("_Save"), GTK_RESPONSE_ACCEPT, - NULL); + dialog = gtk_file_chooser_dialog_new (title, effective_parent, + GTK_FILE_CHOOSER_ACTION_SAVE, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_ACCEPT, + NULL); if (!(flags & FRF_NOASKOVERWRITE)) gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); } else - dialog = gtk_file_chooser_dialog_new (title, NULL, - GTK_FILE_CHOOSER_ACTION_OPEN, - _("_Cancel"), GTK_RESPONSE_CANCEL, - _("_Open"), GTK_RESPONSE_ACCEPT, - NULL); + dialog = gtk_file_chooser_dialog_new (title, effective_parent, + GTK_FILE_CHOOSER_ACTION_OPEN, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Open"), GTK_RESPONSE_ACCEPT, + NULL); + + /* Window classes are required for GTK CSS selectors like + * .zoitechat-dark / .zoitechat-light. */ + fe_apply_theme_to_toplevel (dialog); if (filter && filter[0] && (flags & FRF_FILTERISINITIAL)) { @@ -891,7 +895,8 @@ gtkutil_file_req (GtkWindow *parent, const char *title, void *callback, void *us g_signal_connect (G_OBJECT (dialog), "destroy", G_CALLBACK (gtkutil_file_req_destroy), (gpointer) freq); - if (effective_parent) + if (effective_parent && + gtk_window_get_transient_for (GTK_WINDOW (dialog)) != effective_parent) gtk_window_set_transient_for (GTK_WINDOW (dialog), effective_parent); if (flags & FRF_MODAL)