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:
Steve Frécinaux 2009-10-01 11:23:00 +02:00 committed by Dan Winship
parent 4798ad5107
commit 26015ef16d
2 changed files with 15 additions and 3 deletions

View File

@ -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

View File

@ -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();
} }
}; };