windowManager: Update active workspace after inserting a new one
New workspaces are inserted by shifting all windows on workspaces below the insertion position down. As a result, when the new workspace is inserted before the active one, we end up with the illusion of a workspace switch. Instead, activate the workspace on which the windows from the active one ended up. https://bugzilla.gnome.org/show_bug.cgi?id=665764
This commit is contained in:
parent
67ec1e5519
commit
0bfaa5c6a3
@ -913,6 +913,16 @@ const WindowManager = new Lang.Class({
|
||||
return;
|
||||
window.change_workspace_by_index(index + 1, true);
|
||||
});
|
||||
|
||||
// If the new workspace was inserted before the active workspace,
|
||||
// activate the workspace to which its windows went
|
||||
let activeIndex = global.screen.get_active_workspace_index();
|
||||
if (activeIndex >= pos) {
|
||||
let newWs = global.screen.get_workspace_by_index(activeIndex + 1);
|
||||
this._blockAnimations = true;
|
||||
newWs.activate(global.get_current_time());
|
||||
this._blockAnimations = false;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -945,7 +955,7 @@ const WindowManager = new Lang.Class({
|
||||
},
|
||||
|
||||
_shouldAnimate: function() {
|
||||
return !Main.overview.visible;
|
||||
return !(Main.overview.visible || this._blockAnimations);
|
||||
},
|
||||
|
||||
_shouldAnimateActor: function(actor, types) {
|
||||
|
Loading…
Reference in New Issue
Block a user