summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2022-03-20 19:15:58 +0100
committerMarge Bot <marge-bot@gnome.org>2022-03-28 15:54:33 +0000
commitc02ca54943e8ee39356021bbb2c36b39c7f7e4e5 (patch)
tree58f93b61cc4a560182774cf9ad66f1e53574b228 /src
parent35120dd69cde1411e3faa44e4136a2bf7aebc3cd (diff)
downloadgnome-shell-c02ca54943e8ee39356021bbb2c36b39c7f7e4e5.tar.gz
shell/app: Do not include OR windows in get_windows()
We started tracking all windows to make sure the assumption that any window can be match to an app holds. It is not expected however to ever represent OR windows in the UI, so it seems better to exclude them from get_windows() instead of expecting everyone to filter the return value themselves. (The returned list still includes "uninteresting" windows like attached dialogs, which can be important for cases like the correct MRU order in alt-tab) https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5233 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2252>
Diffstat (limited to 'src')
-rw-r--r--src/shell-app.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/shell-app.c b/src/shell-app.c
index 43b098020..151097138 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -422,7 +422,7 @@ shell_app_activate_window (ShellApp *app,
MetaWindow *window,
guint32 timestamp)
{
- GSList *windows;
+ g_autoptr (GSList) windows = NULL;
if (shell_app_get_state (app) != SHELL_APP_STATE_RUNNING)
return;
@@ -782,11 +782,14 @@ shell_app_compare_windows (gconstpointer a,
* active workspace, then by whether they're visible, and finally
* by the time the user last interacted with them.
*
- * Returns: (transfer none) (element-type MetaWindow): List of windows
+ * Returns: (transfer container) (element-type MetaWindow): List of windows
*/
GSList *
shell_app_get_windows (ShellApp *app)
{
+ GSList *windows = NULL;
+ GSList *l;
+
if (app->running_state == NULL)
return NULL;
@@ -799,7 +802,11 @@ shell_app_get_windows (ShellApp *app)
app->running_state->window_sort_stale = FALSE;
}
- return app->running_state->windows;
+ for (l = app->running_state->windows; l; l = l->next)
+ if (!meta_window_is_override_redirect (META_WINDOW (l->data)))
+ windows = g_slist_prepend (windows, l->data);
+
+ return g_slist_reverse (windows);
}
guint
@@ -1201,7 +1208,7 @@ GSList *
shell_app_get_pids (ShellApp *app)
{
GSList *result;
- GSList *iter;
+ g_autoptr (GSList) iter = NULL;
result = NULL;
for (iter = shell_app_get_windows (app); iter; iter = iter->next)