diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 6ff952da7..9322569f7 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1203,41 +1203,9 @@ var WindowManager = class { if (!Meta.prefs_get_dynamic_workspaces()) return; - workspaceManager.append_new_workspace(false, global.get_current_time()); - - 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; - } + let newWs = workspaceManager.append_new_workspace( + false, global.get_current_time()); + workspaceManager.reorder_workspace(newWs, pos); } keepWorkspaceAlive(workspace, duration) {