keyboardManager: Avoid idempotent calls to meta_backend_set_keymap()
But still try to apply the keymap whenever the input sources changed. This is a different approach to gnome-shell#240 that still avoid redundant changes to the current keymap, but actually trigger one when input sources are added. https://bugzilla.redhat.com/show_bug.cgi?id=1637418 Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/691
This commit is contained in:
parent
8566ec2ee5
commit
b405ed6442
@ -52,11 +52,20 @@ var KeyboardManager = new Lang.Class({
|
|||||||
this._current = null;
|
this._current = null;
|
||||||
this._localeLayoutInfo = this._getLocaleLayout();
|
this._localeLayoutInfo = this._getLocaleLayout();
|
||||||
this._layoutInfos = {};
|
this._layoutInfos = {};
|
||||||
|
this._currentKeymap = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
_applyLayoutGroup(group) {
|
_applyLayoutGroup(group) {
|
||||||
let options = this._buildOptionsString();
|
let options = this._buildOptionsString();
|
||||||
let [layouts, variants] = this._buildGroupStrings(group);
|
let [layouts, variants] = this._buildGroupStrings(group);
|
||||||
|
|
||||||
|
if (this._currentKeymap &&
|
||||||
|
this._currentKeymap.layouts == layouts &&
|
||||||
|
this._currentKeymap.variants == variants &&
|
||||||
|
this._currentKeymap.options == options)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._currentKeymap = {layouts, variants, options};
|
||||||
Meta.get_backend().set_keymap(layouts, variants, options);
|
Meta.get_backend().set_keymap(layouts, variants, options);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -89,8 +98,6 @@ var KeyboardManager = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setUserLayouts(ids) {
|
setUserLayouts(ids) {
|
||||||
let currentId = this._current ? this._current.id : null;
|
|
||||||
let currentGroupIndex = this._current ? this._current.groupIndex : null;
|
|
||||||
this._current = null;
|
this._current = null;
|
||||||
this._layoutInfos = {};
|
this._layoutInfos = {};
|
||||||
|
|
||||||
@ -117,9 +124,6 @@ var KeyboardManager = new Lang.Class({
|
|||||||
info.group = group;
|
info.group = group;
|
||||||
info.groupIndex = groupIndex;
|
info.groupIndex = groupIndex;
|
||||||
|
|
||||||
if (currentId == id && currentGroupIndex == groupIndex)
|
|
||||||
this._current = info;
|
|
||||||
|
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user