[gnome-shell] workspacesDisplay: Connect to 'notify::n-workspaces' early
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspacesDisplay: Connect to 'notify::n-workspaces' early
- Date: Fri, 1 Jun 2012 15:35:40 +0000 (UTC)
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]