windowManager: Don't move sticky windows when inserting workspace

Inserting a workspace is implemented by appending a new workspace, then
shifting all windows after the "new" workspace up. This has an unintended
side effect on sticky windows, as changing its workspace will unstick it.

Fix this by excluding sticky windows - there's little point in moving them
anyway, given that they should be on all workspaces (including the original
workspace and the target one).

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1151
This commit is contained in:
Florian Müllner 2019-04-08 06:40:13 +02:00 committed by Florian Müllner
parent eb9000576c
commit 8b9c8ddb1e

View File

@ -1218,6 +1218,10 @@ var WindowManager = class {
// Same for OR windows // Same for OR windows
if (window.is_override_redirect()) if (window.is_override_redirect())
return; return;
// Sticky windows don't need moving, in fact moving would
// unstick them
if (window.on_all_workspaces)
return;
// Windows on workspaces below pos don't need moving // Windows on workspaces below pos don't need moving
let index = window.get_workspace().index(); let index = window.get_workspace().index();
if (index < pos) if (index < pos)