[gnome-shell/overview-relayout: 11/22] view-selector: Add keyboard shortcut for view switching



commit 8832ce3a2b512a5a6c7526c74ef2b5cc8ce456f9
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Oct 4 16:05:32 2010 +0200

    view-selector: Add keyboard shortcut for view switching
    
    As the view selector is a tabbed interface, use the default keyboard
    shortcut of Ctrl-PageUp/PageDown of GtkNotebook for switching between
    views.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=634948

 js/ui/viewSelector.js |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index d0d0676..368fc30 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -460,6 +460,29 @@ ViewSelector.prototype = {
             this._switchTab(this._tabs[0]);
     },
 
+    _nextTab: function() {
+        if (this._tabs.length == 0 ||
+            this._tabs[this._tabs.length - 1] == this._activeTab)
+            return;
+
+        for (let i = 0; i < this._tabs.length; i++)
+            if (this._tabs[i] == this._activeTab) {
+                this._switchTab(this._tabs[i + 1]);
+                return;
+            }
+    },
+
+    _prevTab: function() {
+        if (this._tabs.length == 0 || this._tabs[0] == this._activeTab)
+            return;
+
+        for (let i = 0; i < this._tabs.length; i++)
+            if (this._tabs[i] == this._activeTab) {
+                this._switchTab(this._tabs[i - 1]);
+                return;
+            }
+    },
+
     _getPreferredTabBarWidth: function(box, forHeight, alloc) {
         let children = box.get_children();
         for (let i = 0; i < children.length; i++) {
@@ -521,10 +544,21 @@ ViewSelector.prototype = {
         if (focus != stage)
             return false;
 
+        let modifiers = Shell.get_event_state(event);
         let symbol = event.get_key_symbol();
         if (symbol == Clutter.Escape) {
             Main.overview.hide();
             return true;
+        } else if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
+            if (symbol == Clutter.Page_Up) {
+                if (!this._searchActive)
+                    this._prevTab();
+                return true;
+            } else if (symbol == Clutter.Page_Down) {
+                if (!this._searchActive)
+                    this._nextTab();
+                return true;
+            }
         }
         return false;
     },



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