From 2631f03108423f8b40d3e45dfc3e2a81790c7990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 30 Sep 2013 19:59:09 +0200 Subject: [PATCH] windowManager: Don't remove the active workspace Currently workspaces (except for the last one) are removed when they become empty. While we do have special treatment for the case where the currently active workspace is removed, we just move directly without animations to the last workspace to avoid ending up on a "random" workspace. However this behavior is still a bit confusing, so keep the workspace around instead until the user decides to move to another one. https://bugzilla.gnome.org/show_bug.cgi?id=709064 --- js/ui/windowManager.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 4c7cac468..cf8029005 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -191,6 +191,7 @@ const WorkspaceTracker = new Lang.Class({ tracker.connect('startup-sequence-changed', Lang.bind(this, this._queueCheckWorkspaces)); global.screen.connect('notify::n-workspaces', Lang.bind(this, this._nWorkspacesChanged)); + global.window_manager.connect('switch-workspace', Lang.bind(this, this._queueCheckWorkspaces)); global.screen.connect('window-entered-monitor', Lang.bind(this, this._windowEnteredMonitor)); global.screen.connect('window-left-monitor', Lang.bind(this, this._windowLeftMonitor)); @@ -249,13 +250,7 @@ const WorkspaceTracker = new Lang.Class({ } let activeWorkspaceIndex = global.screen.get_active_workspace_index(); - let removingCurrentWorkspace = (emptyWorkspaces[activeWorkspaceIndex] && - activeWorkspaceIndex < emptyWorkspaces.length - 1); - - if (removingCurrentWorkspace) { - // "Merge" the empty workspace we are removing with the one at the end - this._wm.blockAnimations(); - } + emptyWorkspaces[activeWorkspaceIndex] = false; // Delete other empty workspaces; do it from the end to avoid index changes for (i = emptyWorkspaces.length - 2; i >= 0; i--) { @@ -263,11 +258,6 @@ const WorkspaceTracker = new Lang.Class({ global.screen.remove_workspace(this._workspaces[i], global.get_current_time()); } - if (removingCurrentWorkspace) { - global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time()); - this._wm.unblockAnimations(); - } - this._checkWorkspacesId = 0; return false; },