[gnome-shell] status/keyboard: Allow switching input source in the message tray



commit 1579aad362e257c4be5054fffcede60710ebde26
Author: Rui Matos <tiagomatos gmail com>
Date:   Fri Mar 29 23:19:02 2013 +0100

    status/keyboard: Allow switching input source in the message tray
    
    We still can't show a popup switcher in the message tray but we can at
    least degrade gracefully and advance to the next input source.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=697009

 js/ui/status/keyboard.js |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 903afe2..2c30175 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -364,14 +364,14 @@ const InputSourceIndicator = new Lang.Class({
             Main.wm.addKeybinding('switch-input-source',
                                   new Gio.Settings({ schema: "org.gnome.desktop.wm.keybindings" }),
                                   Meta.KeyBindingFlags.REVERSES,
-                                  Shell.KeyBindingMode.ALL & ~Shell.KeyBindingMode.MESSAGE_TRAY,
+                                  Shell.KeyBindingMode.ALL,
                                   Lang.bind(this, this._switchInputSource));
         this._keybindingActionBackward =
             Main.wm.addKeybinding('switch-input-source-backward',
                                   new Gio.Settings({ schema: "org.gnome.desktop.wm.keybindings" }),
                                   Meta.KeyBindingFlags.REVERSES |
                                   Meta.KeyBindingFlags.REVERSED,
-                                  Shell.KeyBindingMode.ALL & ~Shell.KeyBindingMode.MESSAGE_TRAY,
+                                  Shell.KeyBindingMode.ALL,
                                   Lang.bind(this, this._switchInputSource));
         this._settings = new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_SCHEMA });
         this._settings.connect('changed::' + KEY_CURRENT_INPUT_SOURCE, Lang.bind(this, 
this._currentInputSourceChanged));
@@ -459,6 +459,17 @@ const InputSourceIndicator = new Lang.Class({
         if (this._mruSources.length < 2)
             return;
 
+        // HACK: Fall back on simple input source switching since we
+        // can't show a popup switcher while a GrabHelper grab is in
+        // effect without considerable work to consolidate the usage
+        // of pushModal/popModal and grabHelper. See
+        // https://bugzilla.gnome.org/show_bug.cgi?id=695143 .
+        if (Main.keybindingMode == Shell.KeyBindingMode.MESSAGE_TRAY ||
+            Main.keybindingMode == Shell.KeyBindingMode.TOPBAR_POPUP) {
+            this._modifiersSwitcher();
+            return;
+        }
+
         let popup = new InputSourcePopup(this._mruSources, this._keybindingAction, 
this._keybindingActionBackward);
         let modifiers = binding.get_modifiers();
         let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;


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