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;
|
return;
|
||||||
window.change_workspace_by_index(index + 1, true);
|
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() {
|
_shouldAnimate: function() {
|
||||||
return !Main.overview.visible;
|
return !(Main.overview.visible || this._blockAnimations);
|
||||||
},
|
},
|
||||||
|
|
||||||
_shouldAnimateActor: function(actor, types) {
|
_shouldAnimateActor: function(actor, types) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user