[gnome-shell] windowManager: Update active workspace after inserting a new one



commit 0bfaa5c6a3eadec879afb84a95272fb8b148222c
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Jan 16 00:32:27 2015 +0100

    windowManager: Update active workspace after inserting a new one
    
    New workspaces are inserted by shifting all windows on workspaces
    below the insertion position down. As a result, when the new
    workspace is inserted before the active one, we end up with
    the illusion of a workspace switch. Instead, activate the workspace
    on which the windows from the active one ended up.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=665764

 js/ui/windowManager.js |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index b450376..88acd45 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -913,6 +913,16 @@ const WindowManager = new Lang.Class({
                 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 = global.screen.get_active_workspace_index();
+        if (activeIndex >= pos) {
+            let newWs = global.screen.get_workspace_by_index(activeIndex + 1);
+            this._blockAnimations = true;
+            newWs.activate(global.get_current_time());
+            this._blockAnimations = false;
+        }
     },
 
 
@@ -945,7 +955,7 @@ const WindowManager = new Lang.Class({
     },
 
     _shouldAnimate: function() {
-        return !Main.overview.visible;
+        return !(Main.overview.visible || this._blockAnimations);
     },
 
     _shouldAnimateActor: function(actor, types) {


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