keyboard: Fix display keyboard layout crash with some input methods
Some ibus input method will use the current keyboard layout, and return "default" as the keyboard layout. When this happens, display the current keyboard layout instead. Fixes #3863. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1756>
This commit is contained in:
@ -156,4 +156,8 @@ var KeyboardManager = class {
|
|||||||
let options = this._xkbOptions.join(',');
|
let options = this._xkbOptions.join(',');
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get currentLayout() {
|
||||||
|
return this._current;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
@ -772,6 +772,10 @@ var InputSourceManager = class {
|
|||||||
get inputSources() {
|
get inputSources() {
|
||||||
return this._inputSources;
|
return this._inputSources;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get keyboardManager() {
|
||||||
|
return this._keyboardManager;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
Signals.addSignalMethods(InputSourceManager.prototype);
|
Signals.addSignalMethods(InputSourceManager.prototype);
|
||||||
|
|
||||||
@ -1059,6 +1063,14 @@ class InputSourceIndicator extends PanelMenu.Button {
|
|||||||
xkbLayout = engineDesc.get_layout();
|
xkbLayout = engineDesc.get_layout();
|
||||||
xkbVariant = engineDesc.get_layout_variant();
|
xkbVariant = engineDesc.get_layout_variant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The `default` layout from ibus engine means to
|
||||||
|
// use the current keyboard layout.
|
||||||
|
if (xkbLayout === 'default') {
|
||||||
|
const current = this._inputSourceManager.keyboardManager.currentLayout;
|
||||||
|
xkbLayout = current.layout;
|
||||||
|
xkbVariant = current.variant;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!xkbLayout || xkbLayout.length == 0)
|
if (!xkbLayout || xkbLayout.length == 0)
|
||||||
|
Reference in New Issue
Block a user