Select next window from the current app on alt+tab
This slightly changes the behaviour of the alt+tab window, this way: when using alt-tab on a workspace that contains two or more windows from the same window, the application selected when hitting alt+tab is the currently selected application, but the highlighted window is the next one. Intended goal is to make it easier to cycle around windows of the same application while not having to cycle through all the applications first. https://bugzilla.gnome.org/show_bug.cgi?id=590563
This commit is contained in:
parent
4798ad5107
commit
26015ef16d
@ -86,7 +86,7 @@ AltTabPopup.prototype = {
|
|||||||
this._appsBox.add_actor(box);
|
this._appsBox.add_actor(box);
|
||||||
},
|
},
|
||||||
|
|
||||||
show : function(initialSelection) {
|
show : function(backward) {
|
||||||
let appMonitor = Shell.AppMonitor.get_default();
|
let appMonitor = Shell.AppMonitor.get_default();
|
||||||
let apps = appMonitor.get_running_apps ("");
|
let apps = appMonitor.get_running_apps ("");
|
||||||
|
|
||||||
@ -138,7 +138,19 @@ AltTabPopup.prototype = {
|
|||||||
this.actor.x = primary.x + Math.floor((primary.width - this.actor.width) / 2);
|
this.actor.x = primary.x + Math.floor((primary.width - this.actor.width) / 2);
|
||||||
this.actor.y = primary.y + Math.floor((primary.height - this.actor.height) / 2);
|
this.actor.y = primary.y + Math.floor((primary.height - this.actor.height) / 2);
|
||||||
|
|
||||||
this._updateSelection(initialSelection);
|
if (!backward && this._icons[this._selected].windows.length > 1) {
|
||||||
|
let candidateWindow = this._icons[this._selected].windows[1];
|
||||||
|
if (candidateWindow.get_workspace() == activeWorkspace) {
|
||||||
|
this._currentWindows[this._selected] = candidateWindow;
|
||||||
|
this._updateSelection(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._updateSelection(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._updateSelection(backward ? -1 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
// There's a race condition; if the user released Alt before
|
// There's a race condition; if the user released Alt before
|
||||||
// we got the grab, then we won't be notified. (See
|
// we got the grab, then we won't be notified. (See
|
||||||
|
@ -274,7 +274,7 @@ WindowManager.prototype = {
|
|||||||
_startAppSwitcher : function(shellwm, binding, window, backwards) {
|
_startAppSwitcher : function(shellwm, binding, window, backwards) {
|
||||||
let tabPopup = new AltTab.AltTabPopup();
|
let tabPopup = new AltTab.AltTabPopup();
|
||||||
|
|
||||||
if (!tabPopup.show(backwards ? -1 : 1))
|
if (!tabPopup.show(backwards))
|
||||||
tabPopup.destroy();
|
tabPopup.destroy();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user