[gnome-shell] shell-app: Consider desktop actions in can_open_new_window()
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] shell-app: Consider desktop actions in can_open_new_window()
- Date: Tue, 6 Aug 2019 18:46:25 +0000 (UTC)
commit 1e6cb43815964454889825373c4e793f155265a5
Author: Florian Müllner <fmuellner gnome org>
Date: Tue Aug 6 13:19:59 2019 +0200
shell-app: Consider desktop actions in can_open_new_window()
We currently only consider a remote "app.new-window" action when running,
but not a fixed "new-window" action in the .desktop file. The latter is
clearly useful as well, in particular as open_new_window() already does,
so add it.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/665
src/shell-app.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/src/shell-app.c b/src/shell-app.c
index b8fd9384f..7968e3358 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -601,6 +601,8 @@ shell_app_can_open_new_window (ShellApp *app)
{
ShellAppRunningState *state;
MetaWindow *window;
+ GDesktopAppInfo *desktop_info;
+ const char * const *desktop_actions;
/* Apps that are not running can always open new windows, because
activating them would open the first one */
@@ -619,12 +621,18 @@ shell_app_can_open_new_window (ShellApp *app)
if (!app->info)
return FALSE;
+ desktop_info = G_DESKTOP_APP_INFO (app->info);
+
/* If the app is explicitly telling us, then we know for sure */
- if (g_desktop_app_info_has_key (G_DESKTOP_APP_INFO (app->info),
- "X-GNOME-SingleWindow"))
- return !g_desktop_app_info_get_boolean (G_DESKTOP_APP_INFO (app->info),
+ if (g_desktop_app_info_has_key (desktop_info, "X-GNOME-SingleWindow"))
+ return !g_desktop_app_info_get_boolean (desktop_info,
"X-GNOME-SingleWindow");
+ /* If it has a new-window desktop action, it should be able to */
+ desktop_actions = g_desktop_app_info_list_actions (desktop_info);
+ if (desktop_actions && g_strv_contains (desktop_actions, "new-window"))
+ return TRUE;
+
/* If this is a unique GtkApplication, and we don't have a new-window, then
probably we can't
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]