[gnome-shell] Select next window from the current app on alt+tab



commit 26015ef16d22027d14ed32dbea353480628a3708
Author: Steve Frécinaux <code istique net>
Date:   Thu Oct 1 11:23:00 2009 +0200

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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]