[gnome-shell] Revert "Revert "windowManager: Block dynamic workspace updates while showing the popup""
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Revert "Revert "windowManager: Block dynamic workspace updates while showing the popup""
- Date: Fri, 27 Mar 2015 13:35:04 +0000 (UTC)
commit d24abab4a84a9f2c821b5aba610a7eace1ed8628
Author: Adel Gadllah <adel gadllah gmail com>
Date: Fri Mar 27 14:34:28 2015 +0100
Revert "Revert "windowManager: Block dynamic workspace updates while showing the popup""
This was an accident.
This reverts commit 5e26d0c90c778559da73590517b65e60b1f27b1c.
js/ui/windowManager.js | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index bdde746..01d5107 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -197,6 +197,8 @@ const WorkspaceTracker = new Lang.Class({
this._workspaces = [];
this._checkWorkspacesId = 0;
+ this._pauseWorkspaceCheck = false;
+
let tracker = Shell.WindowTracker.get_default();
tracker.connect('startup-sequence-changed', Lang.bind(this, this._queueCheckWorkspaces));
@@ -220,6 +222,14 @@ const WorkspaceTracker = new Lang.Class({
return new Gio.Settings({ schema_id: 'org.gnome.mutter' });
},
+ blockUpdates: function() {
+ this._pauseWorkspaceCheck = true;
+ },
+
+ unblockUpdates: function() {
+ this._pauseWorkspaceCheck = false;
+ },
+
_checkWorkspaces: function() {
let i;
let emptyWorkspaces = [];
@@ -229,6 +239,10 @@ const WorkspaceTracker = new Lang.Class({
return false;
}
+ // Update workspaces only if Dynamic Workspace Management has not been paused by some other function
+ if (this._pauseWorkspaceCheck)
+ return true;
+
for (i = 0; i < this._workspaces.length; i++) {
let lastRemoved = this._workspaces[i]._lastRemovedWindow;
if ((lastRemoved &&
@@ -627,6 +641,8 @@ const WindowManager = new Lang.Class({
this._allowedKeybindings = {};
+ this._isWorkspacePrepended = false;
+
this._switchData = null;
this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone));
this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) {
@@ -915,6 +931,8 @@ const WindowManager = new Lang.Class({
if (!Meta.prefs_get_dynamic_workspaces())
return;
+ global.screen.append_new_workspace(false, global.get_current_time());
+
let windows = global.get_window_actors().map(function(winActor) {
return winActor.meta_window;
});
@@ -1642,8 +1660,10 @@ const WindowManager = new Lang.Class({
} else if (isNaN(target)) {
// Prepend a new workspace dynamically
if (screen.get_active_workspace_index() == 0 &&
- action == 'move' && target == 'up')
+ action == 'move' && target == 'up' && this._isWorkspacePrepended == false) {
this.insertWorkspace(0);
+ this._isWorkspacePrepended = true;
+ }
direction = Meta.MotionDirection[target.toUpperCase()];
newWs = screen.get_active_workspace().get_neighbor(direction);
@@ -1668,9 +1688,12 @@ const WindowManager = new Lang.Class({
if (!Main.overview.visible) {
if (this._workspaceSwitcherPopup == null) {
+ this._workspaceTracker.blockUpdates();
this._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
this._workspaceSwitcherPopup.connect('destroy', Lang.bind(this, function() {
+ this._workspaceTracker.unblockUpdates();
this._workspaceSwitcherPopup = null;
+ this._isWorkspacePrepended = false;
}));
}
this._workspaceSwitcherPopup.display(direction, newWs.index());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]