[gnome-shell] workspacesDisplay: Connect to 'notify::n-workspaces' early



commit 76005f5adfda0324925a55053a42a74c34a54c03
Author: Florian MÃllner <fmuellner gnome org>
Date:   Wed Mar 28 15:25:33 2012 +0200

    workspacesDisplay: Connect to 'notify::n-workspaces' early
    
    Currently we only connect to the 'notify::n-workspaces' signal the
    first time the overview is shown, which means we will miss any
    changes to the workspace layout in the meanwhile.
    In particular, the decision of whether the workspace switcher should be
    shown is taken before the dynamic workspace handling takes over, and is
    thus based entirely on the value of the num-workspaces user preference
    rather than the actual number of workspaces.
    Just connect the signal in _init() (with the nice side-effect to make it
    explicit that the signal handler won't ever be disconnected).
    
    https://bugzilla.gnome.org/show_bug.cgi?id=673198

 js/ui/workspacesView.js |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)
---
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index e364509..df3143f 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -529,9 +529,11 @@ const WorkspacesDisplay = new Lang.Class({
             this._updateAlwaysZoom();
         }));
 
+        global.screen.connect('notify::n-workspaces',
+                              Lang.bind(this, this._workspacesChanged));
+
         this._switchWorkspaceNotifyId = 0;
 
-        this._nWorkspacesChangedId = 0;
         this._itemDragBeginId = 0;
         this._itemDragCancelledId = 0;
         this._itemDragEndId = 0;
@@ -570,9 +572,6 @@ const WorkspacesDisplay = new Lang.Class({
             global.screen.connect('restacked',
                                   Lang.bind(this, this._onRestacked));
 
-        if (this._nWorkspacesChangedId == 0)
-            this._nWorkspacesChangedId = global.screen.connect('notify::n-workspaces',
-                                                               Lang.bind(this, this._workspacesChanged));
         if (this._itemDragBeginId == 0)
             this._itemDragBeginId = Main.overview.connect('item-drag-begin',
                                                           Lang.bind(this, this._dragBegin));
@@ -925,19 +924,16 @@ const WorkspacesDisplay = new Lang.Class({
     },
 
     _workspacesChanged: function() {
-        let oldNumWorkspaces = this._workspaces[0].length;
-        let newNumWorkspaces = global.screen.n_workspaces;
-        let active = global.screen.get_active_workspace_index();
-
-        if (oldNumWorkspaces == newNumWorkspaces)
-            return;
-
         this._updateAlwaysZoom();
         this._updateZoom();
 
         if (this._workspacesViews == null)
             return;
 
+        let oldNumWorkspaces = this._workspaces[0].length;
+        let newNumWorkspaces = global.screen.n_workspaces;
+        let active = global.screen.get_active_workspace_index();
+
         let lostWorkspaces = [];
         if (newNumWorkspaces > oldNumWorkspaces) {
             let monitors = Main.layoutManager.monitors;



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