summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Frécinaux <code@istique.net>2009-10-01 09:23:00 (GMT)
committerDan Winship <danw@gnome.org>2009-10-04 16:45:23 (GMT)
commit26015ef16d22027d14ed32dbea353480628a3708 (patch)
tree94dc7fcf61bb2dc3038b0df0298c109714bf121e
parent4798ad5107024e0e661f23a444b23dbbc16dd715 (diff)
downloadgnome-shell-26015ef16d22027d14ed32dbea353480628a3708.tar.gz
gnome-shell-26015ef16d22027d14ed32dbea353480628a3708.tar.xz
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
-rw-r--r--js/ui/altTab.js16
-rw-r--r--js/ui/windowManager.js2
2 files changed, 15 insertions, 3 deletions
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index 74cb69f..6ff06aa 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -86,7 +86,7 @@ AltTabPopup.prototype = {
this._appsBox.add_actor(box);
},
- show : function(initialSelection) {
+ show : function(backward) {
let appMonitor = Shell.AppMonitor.get_default();
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.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
// we got the grab, then we won't be notified. (See
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index c01a510..46e5964 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -274,7 +274,7 @@ WindowManager.prototype = {
_startAppSwitcher : function(shellwm, binding, window, backwards) {
let tabPopup = new AltTab.AltTabPopup();
- if (!tabPopup.show(backwards ? -1 : 1))
+ if (!tabPopup.show(backwards))
tabPopup.destroy();
}
};