workspaceTracker: Don't keep multiple trailing workspaces
Since we always keep the active workspace until the user switches to a different one, we may end up with two empty workspaces at the end. It's not obvious to users why this happens, and there's indeed no good reason for the behavior - just remove the trailing workspace in that case. https://gitlab.gnome.org/GNOME/gnome-shell/issues/536
This commit is contained in:
parent
87a645aa2b
commit
9d6e1a89fc
@ -278,15 +278,18 @@ var WorkspaceTracker = new Lang.Class({
|
|||||||
// If we don't have an empty workspace at the end, add one
|
// If we don't have an empty workspace at the end, add one
|
||||||
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
|
||||||
workspaceManager.append_new_workspace(false, global.get_current_time());
|
workspaceManager.append_new_workspace(false, global.get_current_time());
|
||||||
emptyWorkspaces.push(false);
|
emptyWorkspaces.push(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let lastIndex = emptyWorkspaces.length - 1;
|
||||||
|
let lastEmptyIndex = emptyWorkspaces.lastIndexOf(false) + 1;
|
||||||
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
||||||
emptyWorkspaces[activeWorkspaceIndex] = false;
|
emptyWorkspaces[activeWorkspaceIndex] = false;
|
||||||
|
|
||||||
// Delete other empty workspaces; do it from the end to avoid index changes
|
// Delete empty workspaces except for the last one; do it from the end
|
||||||
for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
|
// to avoid index changes
|
||||||
if (emptyWorkspaces[i])
|
for (i = lastIndex; i >= 0; i--) {
|
||||||
|
if (emptyWorkspaces[i] && i != lastEmptyIndex)
|
||||||
workspaceManager.remove_workspace(this._workspaces[i], global.get_current_time());
|
workspaceManager.remove_workspace(this._workspaces[i], global.get_current_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user