From 1767cd0f6ce80ed5f5074de921a0942f0bb9e9cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 5 Feb 2019 02:32:52 +0100 Subject: [PATCH] app: Consider "quit" action for quit Just like we take a remote "new-window" action into account for opening new windows, we should call an explicit "quit" action before falling back to closing all the app's windows on quit. https://gitlab.gnome.org/GNOME/gnome-shell/issues/624 --- src/shell-app.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/shell-app.c b/src/shell-app.c index 7ef3a8156..e0759e503 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -1183,13 +1183,26 @@ _shell_app_handle_startup_sequence (ShellApp *app, gboolean shell_app_request_quit (ShellApp *app) { + GActionGroup *group = NULL; GSList *iter; if (shell_app_get_state (app) != SHELL_APP_STATE_RUNNING) return FALSE; - /* TODO - check for an XSMP connection; we could probably use that */ + /* First, check whether the app exports an explicit "quit" action + * that we can activate on the bus + */ + group = G_ACTION_GROUP (app->running_state->muxer); + if (g_action_group_has_action (group, "app.quit") && + g_action_group_get_action_parameter_type (group, "app.quit") == NULL) + { + g_action_group_activate_action (group, "app.quit", NULL); + + return TRUE; + } + + /* Otherwise, fall back to closing all the app's windows */ for (iter = app->running_state->windows; iter; iter = iter->next) { MetaWindow *win = iter->data;