53 lines
1.6 KiB
Diff
53 lines
1.6 KiB
Diff
From 642107a28f9616b5836d6da3b57d9bfc33acc8d0 Mon Sep 17 00:00:00 2001
|
|
From: Carlos Garnacho <carlosg@gnome.org>
|
|
Date: Sun, 29 Apr 2018 16:28:04 +0200
|
|
Subject: [PATCH] keyboardManager: Preserve current keymap across reloads
|
|
|
|
The IM can pretty much update the input sources anytime (even if
|
|
to set the same ones). That ends up triggering rebuilding all user
|
|
defined keymaps, and losing modifier state if we are unfortunate
|
|
enough that this caught us while pressing one.
|
|
|
|
One common situation seems to be password entries, resulting in
|
|
the wrong character being printed if the first character happens
|
|
to require the shift key.
|
|
|
|
If the current keymap is not found in the newly loaded list,
|
|
this._current will end up null, with the same behavior as we get
|
|
currently (immediate keymap reload).
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1569211
|
|
|
|
https://gitlab.gnome.org/GNOME/gnome-shell/issues/240
|
|
|
|
Closes: #240
|
|
---
|
|
js/misc/keyboardManager.js | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/js/misc/keyboardManager.js b/js/misc/keyboardManager.js
|
|
index b8984fe98..3f0bad282 100644
|
|
--- a/js/misc/keyboardManager.js
|
|
+++ b/js/misc/keyboardManager.js
|
|
@@ -89,6 +89,7 @@ var KeyboardManager = new Lang.Class({
|
|
},
|
|
|
|
setUserLayouts(ids) {
|
|
+ let currentId = this._current ? this._current.id : null;
|
|
this._current = null;
|
|
this._layoutInfos = {};
|
|
|
|
@@ -115,6 +116,9 @@ var KeyboardManager = new Lang.Class({
|
|
info.group = group;
|
|
info.groupIndex = groupIndex;
|
|
|
|
+ if (id == currentId)
|
|
+ this._current = info;
|
|
+
|
|
i += 1;
|
|
}
|
|
},
|
|
--
|
|
2.17.0
|
|
|