status/keyboard: Always released held keyboard after activating source
As the keyboard is released asynchronously after setting the ibus engine, there's a possibility that the `this._reloading` property changed in the meantime. To ensure that `holdKeyboard()` and `releaseKeyboard()` are correctly paired, record the condition in a local variable so that it maintains its value in the callback. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3476>
This commit is contained in:
parent
0a3c12f8d6
commit
fb58ceb4c5
@ -503,7 +503,8 @@ export class InputSourceManager extends Signals.EventEmitter {
|
||||
// E.g. Focusing on a password entry in a popup in Xorg Firefox
|
||||
// will emit 'set-content-type' signal.
|
||||
// https://gitlab.gnome.org/GNOME/gnome-shell/issues/391
|
||||
if (!this._reloading)
|
||||
const holdKeyboard = !this._reloading;
|
||||
if (holdKeyboard)
|
||||
KeyboardManager.holdKeyboard();
|
||||
this._keyboardManager.apply(is.xkbId);
|
||||
|
||||
@ -520,7 +521,7 @@ export class InputSourceManager extends Signals.EventEmitter {
|
||||
engine = 'xkb:us::eng';
|
||||
|
||||
this._ibusManager.setEngine(engine).then(() => {
|
||||
if (!this._reloading)
|
||||
if (holdKeyboard)
|
||||
KeyboardManager.releaseKeyboard();
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user