Revert "windowManager: Use new reorder_workspace() API"

It's too easy to break, so revert to the old code until we
figure out a fix.

This reverts commit ff9bb5399b.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1497
This commit is contained in:
Florian Müllner 2019-10-08 20:42:20 +02:00
parent 6205d5eb27
commit 3d39b32a0b

View File

@ -1212,9 +1212,41 @@ var WindowManager = class {
if (!Meta.prefs_get_dynamic_workspaces()) if (!Meta.prefs_get_dynamic_workspaces())
return; return;
let newWs = workspaceManager.append_new_workspace( workspaceManager.append_new_workspace(false, global.get_current_time());
false, global.get_current_time());
workspaceManager.reorder_workspace(newWs, pos); let windows = global.get_window_actors().map(a => a.meta_window);
// To create a new workspace, we slide all the windows on workspaces
// below us to the next workspace, leaving a blank workspace for us
// to recycle.
windows.forEach(window => {
// If the window is attached to an ancestor, we don't need/want
// to move it
if (window.get_transient_for() != null)
return;
// Same for OR windows
if (window.is_override_redirect())
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
let index = window.get_workspace().index();
if (index < pos)
return;
window.change_workspace_by_index(index + 1, true);
});
// If the new workspace was inserted before the active workspace,
// activate the workspace to which its windows went
let activeIndex = workspaceManager.get_active_workspace_index();
if (activeIndex >= pos) {
let newWs = workspaceManager.get_workspace_by_index(activeIndex + 1);
this._blockAnimations = true;
newWs.activate(global.get_current_time());
this._blockAnimations = false;
}
} }
keepWorkspaceAlive(workspace, duration) { keepWorkspaceAlive(workspace, duration) {