[gnome-shell] windowManager: Use new reorder_workspace() API



commit ff9bb5399b1d22fceaf00c9fc8e0058f24af96cc
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Jul 9 00:11:06 2019 +0200

    windowManager: Use new reorder_workspace() API
    
    With the new Mutter API, inserting a workspace at a particular position
    becomes as easy as creating the workspace and moving it to the desired
    index.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/620

 js/ui/windowManager.js | 38 +++-----------------------------------
 1 file changed, 3 insertions(+), 35 deletions(-)
---
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) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]