[gnome-shell] [AltTab] fix Alt-Shift-Tab again



commit b9f9dd948aa2683061127ddf6848edf39f3707e2
Author: Dan Winship <danw gnome org>
Date:   Fri Aug 27 15:44:31 2010 -0400

    [AltTab] fix Alt-Shift-Tab again
    
    In Clutter 1.2, clutter_event_get_keysym() ignored the state of the
    Shift key. In 1.4, it does not, so we have to adjust our comparisons
    accordingly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=627782

 js/ui/altTab.js |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index f3b6b1e..0b30167 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -215,6 +215,9 @@ AltTabPopup.prototype = {
     _keyPressEvent : function(actor, event) {
         let keysym = event.get_key_symbol();
         let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK);
+        // X allows servers to represent Shift+Tab in two different ways
+        if (shift && keysym == Clutter.Tab)
+            keysym = Clutter.ISO_Left_Tab;
 
         this._disableHover();
 
@@ -222,17 +225,22 @@ AltTabPopup.prototype = {
         // keys aren't mapped correctly
 
         if (keysym == Clutter.grave)
-            this._select(this._currentApp, shift ? this._previousWindow() : this._nextWindow());
+            this._select(this._currentApp, this._nextWindow());
+        else if (keysym == Clutter.asciitilde)
+            this._select(this._currentApp, this._previousWindow());
         else if (keysym == Clutter.Escape)
             this.destroy();
         else if (this._thumbnailsFocused) {
             if (keysym == Clutter.Tab) {
-                if (shift && (this._currentWindow == 0 || this._currentWindow == -1))
-                    this._select(this._previousApp());
-                else if (!shift && this._currentWindow == this._appIcons[this._currentApp].cachedWindows.length - 1)
+                if (this._currentWindow == this._appIcons[this._currentApp].cachedWindows.length - 1)
                     this._select(this._nextApp());
                 else
-                    this._select(this._currentApp, shift ? this._previousWindow() : this._nextWindow());
+                    this._select(this._currentApp, this._nextWindow());
+            } else if (keysym == Clutter.ISO_Left_Tab) {
+                if (this._currentWindow == 0 || this._currentWindow == -1)
+                    this._select(this._previousApp());
+                else
+                    this._select(this._currentApp, this._previousWindow());
             } else if (keysym == Clutter.Left || keysym == Clutter.a)
                 this._select(this._currentApp, this._previousWindow());
             else if (keysym == Clutter.Right || keysym == Clutter.d)
@@ -241,7 +249,9 @@ AltTabPopup.prototype = {
                 this._select(this._currentApp, null, true);
         } else {
             if (keysym == Clutter.Tab)
-                this._select(shift ? this._previousApp() : this._nextApp());
+                this._select(this._nextApp());
+            else if (keysym == Clutter.ISO_Left_Tab)
+                this._select(this._previousApp());
             else if (keysym == Clutter.Left || keysym == Clutter.a)
                 this._select(this._previousApp());
             else if (keysym == Clutter.Right || keysym == Clutter.d)



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