[gnome-shell/wip/halfline/fix-layout-switching: 3/3] keyboardManager: take group index into account when preserving keymap



commit 2997e4950ba31747b5e3260c306456b0de413421
Author: Ray Strode <rstrode redhat com>
Date:   Fri May 4 17:45:19 2018 -0400

    keyboardManager: take group index into account when preserving keymap
    
    commit 642107a2 attempts to avoid resetting the current keymap on
    spurious input source changes.
    
    It does this by checking if the current layout id is found in
    the new list of layouts and resetting the current layout to the
    associated match in the list. By not nullifying the current
    layout, it won't get subsequently reset.
    
    Unfortunately, if the order of the list changes, resetting the
    current keymap is still necessary, since the order corresponds
    with the index of the activated group.
    
    This commit changes the code to nullify the current layout if
    its group index changes.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1573923

 js/misc/keyboardManager.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
---
diff --git a/js/misc/keyboardManager.js b/js/misc/keyboardManager.js
index 3f0bad282..ae59f0014 100644
--- a/js/misc/keyboardManager.js
+++ b/js/misc/keyboardManager.js
@@ -90,6 +90,7 @@ var KeyboardManager = new Lang.Class({
 
     setUserLayouts(ids) {
         let currentId = this._current ? this._current.id : null;
+        let currentGroupIndex = this._current ? this._current.groupIndex : null;
         this._current = null;
         this._layoutInfos = {};
 
@@ -116,7 +117,7 @@ var KeyboardManager = new Lang.Class({
             info.group = group;
             info.groupIndex = groupIndex;
 
-            if (id == currentId)
+            if (currentId == id && currentGroupIndex == groupIndex)
                 this._current = info;
 
             i += 1;


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