From 26015ef16d22027d14ed32dbea353480628a3708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steve=20Fr=C3=A9cinaux?= Date: Thu, 1 Oct 2009 11:23:00 +0200 Subject: [PATCH] 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 --- js/ui/altTab.js | 16 ++++++++++++++-- js/ui/windowManager.js | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 74cb69fa4..6ff06aae6 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 c01a510ee..46e5964ef 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(); } };