Fri, 22 Nov 2024 01:26:06 -0600
Set the application on all windows
In some DEs (like GNOME), this allows grouping them all together.
It also restores the "construction" style in the title bar (for Adwaita stuff at least).
Testing Done:
Opened all the windows, and Alt-Tab now groups things together. Also checked in the inspector that the property was set on the windows.
Reviewed at https://reviews.imfreedom.org/r/3664/
--- a/pidgin/pidginabout.c Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginabout.c Fri Nov 22 01:26:06 2024 -0600 @@ -697,10 +697,11 @@ * Public API *****************************************************************************/ GtkWidget * -pidgin_about_dialog_new(void) { +pidgin_about_dialog_new(GtkApplication *application) { return g_object_new( PIDGIN_TYPE_ABOUT_DIALOG, "title", "About Pidgin", + "application", application, NULL ); }
--- a/pidgin/pidginabout.h Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginabout.h Fri Nov 22 01:26:06 2024 -0600 @@ -49,6 +49,7 @@ /** * pidgin_about_dialog_new: + * @application: (nullable): A #GtkApplication to associate with this dialog. * * Creates a new about window. * @@ -57,7 +58,7 @@ * Since: 3.0 */ PIDGIN_AVAILABLE_IN_3_0 -GtkWidget *pidgin_about_dialog_new(void); +GtkWidget *pidgin_about_dialog_new(GtkApplication *application); G_END_DECLS
--- a/pidgin/pidginaccountmanager.c Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginaccountmanager.c Fri Nov 22 01:26:06 2024 -0600 @@ -271,8 +271,11 @@ * Public API *****************************************************************************/ GtkWidget * -pidgin_account_manager_new(void) { - return g_object_new(PIDGIN_TYPE_ACCOUNT_MANAGER, NULL); +pidgin_account_manager_new(GtkApplication *application) { + return g_object_new( + PIDGIN_TYPE_ACCOUNT_MANAGER, + "application", application, + NULL); } void
--- a/pidgin/pidginaccountmanager.h Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginaccountmanager.h Fri Nov 22 01:26:06 2024 -0600 @@ -51,6 +51,7 @@ /** * pidgin_account_manager_new: + * @application: (nullable): A #GtkApplication to associate with this window. * * Creates a new account manager dialog. * @@ -59,7 +60,7 @@ * Since: 3.0 */ PIDGIN_AVAILABLE_IN_3_0 -GtkWidget *pidgin_account_manager_new(void); +GtkWidget *pidgin_account_manager_new(GtkApplication *application); /** * pidgin_account_manager_show_overview:
--- a/pidgin/pidginapplication.c Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginapplication.c Fri Nov 22 01:26:06 2024 -0600 @@ -105,11 +105,11 @@ * Since: 3.0 */ static GtkWidget * -pidgin_application_get_account_manager(void) { +pidgin_application_get_account_manager(PidginApplication *application) { static GtkWidget *manager = NULL; if(!PIDGIN_IS_ACCOUNT_MANAGER(manager)) { - manager = pidgin_account_manager_new(); + manager = pidgin_account_manager_new(GTK_APPLICATION(application)); g_object_add_weak_pointer(G_OBJECT(manager), (gpointer)&manager); } @@ -303,7 +303,7 @@ static GtkWidget *about = NULL; if(!GTK_IS_WIDGET(about)) { - about = pidgin_about_dialog_new(); + about = pidgin_about_dialog_new(GTK_APPLICATION(application)); g_object_add_weak_pointer(G_OBJECT(about), (gpointer)&about); } @@ -315,7 +315,7 @@ G_GNUC_UNUSED GVariant *parameter, gpointer data) { PidginApplication *application = data; - GtkWidget *manager = pidgin_application_get_account_manager(); + GtkWidget *manager = pidgin_application_get_account_manager(application); pidgin_account_manager_show_overview(PIDGIN_ACCOUNT_MANAGER(manager)); @@ -415,7 +415,9 @@ account = purple_account_manager_find_by_id(manager, id); if(PURPLE_IS_ACCOUNT(account)) { - GtkWidget *account_manager = pidgin_application_get_account_manager(); + GtkWidget *account_manager = NULL; + + account_manager = pidgin_application_get_account_manager(application); pidgin_account_manager_edit_account(PIDGIN_ACCOUNT_MANAGER(account_manager), account); @@ -467,7 +469,7 @@ static GtkWidget *dialog = NULL; if(!GTK_IS_WIDGET(dialog)) { - dialog = pidgin_channel_join_dialog_new(); + dialog = pidgin_channel_join_dialog_new(GTK_APPLICATION(application)); g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer)&dialog); } @@ -495,7 +497,10 @@ static GtkWidget *preferences = NULL; if(!GTK_IS_WIDGET(preferences)) { - preferences = g_object_new(PIDGIN_TYPE_PREFS_WINDOW, NULL); + preferences = g_object_new( + PIDGIN_TYPE_PREFS_WINDOW, + "application", application, + NULL); g_object_add_weak_pointer(G_OBJECT(preferences), (gpointer)&preferences); } @@ -851,11 +856,11 @@ } static void -pidgin_application_activate(G_GNUC_UNUSED GApplication *application) { +pidgin_application_activate(GApplication *application) { static GtkWidget *default_window = NULL; if(!GTK_IS_WIDGET(default_window)) { - default_window = pidgin_display_window_new(); + default_window = pidgin_display_window_new(GTK_APPLICATION(application)); g_object_add_weak_pointer(G_OBJECT(default_window), (gpointer)&default_window); }
--- a/pidgin/pidginchanneljoindialog.c Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginchanneljoindialog.c Fri Nov 22 01:26:06 2024 -0600 @@ -367,6 +367,9 @@ * Public API *****************************************************************************/ GtkWidget * -pidgin_channel_join_dialog_new(void) { - return g_object_new(PIDGIN_TYPE_CHANNEL_JOIN_DIALOG, NULL); +pidgin_channel_join_dialog_new(GtkApplication *application) { + return g_object_new( + PIDGIN_TYPE_CHANNEL_JOIN_DIALOG, + "application", application, + NULL); }
--- a/pidgin/pidginchanneljoindialog.h Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidginchanneljoindialog.h Fri Nov 22 01:26:06 2024 -0600 @@ -49,6 +49,7 @@ /** * pidgin_channel_join_dialog_new: + * @application: (nullable): A #GtkApplication to associate with this dialog. * * Creates a new channel join dialog. * @@ -57,7 +58,7 @@ * Since: 3.0 */ PIDGIN_AVAILABLE_IN_3_0 -GtkWidget *pidgin_channel_join_dialog_new(void); +GtkWidget *pidgin_channel_join_dialog_new(GtkApplication *application); G_END_DECLS
--- a/pidgin/pidgindisplaywindow.c Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidgindisplaywindow.c Fri Nov 22 01:26:06 2024 -0600 @@ -376,10 +376,7 @@ G_LIST_MODEL(tree_model)); g_clear_object(&tree_model); - /* Set the application and add all of our actions. */ - gtk_window_set_application(GTK_WINDOW(window), - GTK_APPLICATION(g_application_get_default())); - + /* Add all of our actions. */ conversation_actions = g_simple_action_group_new(); g_action_map_add_action_entries(G_ACTION_MAP(conversation_actions), conversation_entries, @@ -478,9 +475,10 @@ * API *****************************************************************************/ GtkWidget * -pidgin_display_window_new(void) { +pidgin_display_window_new(GtkApplication *application) { return g_object_new( PIDGIN_TYPE_DISPLAY_WINDOW, + "application", application, "show-menubar", TRUE, NULL); }
--- a/pidgin/pidgindisplaywindow.h Fri Nov 22 00:58:21 2024 -0600 +++ b/pidgin/pidgindisplaywindow.h Fri Nov 22 01:26:06 2024 -0600 @@ -53,6 +53,7 @@ /** * pidgin_display_window_new: + * @application: (nullable): A #GtkApplication to associate with this window. * * Creates a new #PidginDisplayWindow instance. * @@ -61,7 +62,7 @@ * Since: 3.0 */ PIDGIN_AVAILABLE_IN_3_0 -GtkWidget *pidgin_display_window_new(void); +GtkWidget *pidgin_display_window_new(GtkApplication *application); /** * pidgin_display_window_add: