summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2020-03-21 18:24:52 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2020-05-05 22:19:27 +0200
commitf3420b0341c825c410aa33ab0b1c20fd754ee95b (patch)
tree4b6374e3f4d6b694a7566dfe33f2518aa3d007ab
parentdde09066391ac2c5266ebd29756184856c7ec2b2 (diff)
downloadmutter-f3420b0341c825c410aa33ab0b1c20fd754ee95b.tar.gz
window: Really propagate effective on-all-workspaces setting to transients
Commit cda9579034b fixed a corner case when setting the initial workspace state of transient windows, but it still missed a case: should_be_on_all_workspaces() returns whether the window should be on all workspaces according to its properties/placement, but it doesn't take transient relations into account. That means in case of nested transients, we can still fail the assert: 1. on-all-workspaces toplevel 2. should_be_on_all_workspaces() is TRUE for the first transient's parent, as the window from (1) has on_all_workspaces_requested == TRUE 3. should_be_on_all_workspaces() is FALSE for the second transient's parent, as the window from (2) is only on-all-workspace because of its parent We can fix this by either using the state from the root ancestor instead of the direct transient parent, or by using the parent's on_all_workspaces_state. The latter is simpler, so go with that. https://gitlab.gnome.org/GNOME/mutter/issues/1083
-rw-r--r--src/core/window.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/window.c b/src/core/window.c
index b8d67347e..c5f6fa5cd 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -1272,7 +1272,7 @@ _meta_window_shared_new (MetaDisplay *display,
window->desc, window->transient_for->desc);
set_workspace_state (window,
- should_be_on_all_workspaces (window->transient_for),
+ window->transient_for->on_all_workspaces,
window->transient_for->workspace);
}
else if (window->on_all_workspaces)