ibusManager: Use async await instead of callbacks
Code that uses async/await is often easier to follow than callbacks, in particular as part of the code is already async. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3439>
This commit is contained in:
parent
8af1a1dfb9
commit
ce89b15bb1
@ -275,15 +275,12 @@ class IBusManager extends Signals.EventEmitter {
|
|||||||
return this._engines.get(id);
|
return this._engines.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _setEngine(id, callback) {
|
async _setEngine(id) {
|
||||||
// Send id even if id == this._currentEngineName
|
// Send id even if id == this._currentEngineName
|
||||||
// because 'properties-registered' signal can be emitted
|
// because 'properties-registered' signal can be emitted
|
||||||
// while this._ibusSources == null on a lock screen.
|
// while this._ibusSources == null on a lock screen.
|
||||||
if (!this._ready) {
|
if (!this._ready)
|
||||||
if (callback)
|
|
||||||
callback();
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this._ibus.set_global_engine_async(id,
|
await this._ibus.set_global_engine_async(id,
|
||||||
@ -293,12 +290,9 @@ class IBusManager extends Signals.EventEmitter {
|
|||||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||||
logError(e);
|
logError(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (callback)
|
|
||||||
callback();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async setEngine(id, callback) {
|
async setEngine(id) {
|
||||||
if (this._oskCompletion)
|
if (this._oskCompletion)
|
||||||
this._preOskEngine = id;
|
this._preOskEngine = id;
|
||||||
|
|
||||||
@ -307,9 +301,9 @@ class IBusManager extends Signals.EventEmitter {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._oskCompletion)
|
if (this._oskCompletion)
|
||||||
this.setCompletionEnabled(false, callback);
|
await this.setCompletionEnabled(false);
|
||||||
else
|
else
|
||||||
await this._setEngine(id, callback);
|
await this._setEngine(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
preloadEngines(ids) {
|
preloadEngines(ids) {
|
||||||
@ -339,7 +333,7 @@ class IBusManager extends Signals.EventEmitter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
setCompletionEnabled(enabled, callback) {
|
async setCompletionEnabled(enabled) {
|
||||||
/* Needs typing-booster available */
|
/* Needs typing-booster available */
|
||||||
if (enabled && !this._engines.has(TYPING_BOOSTER_ENGINE))
|
if (enabled && !this._engines.has(TYPING_BOOSTER_ENGINE))
|
||||||
return false;
|
return false;
|
||||||
@ -354,9 +348,9 @@ class IBusManager extends Signals.EventEmitter {
|
|||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
this._preOskEngine = this._currentEngineName;
|
this._preOskEngine = this._currentEngineName;
|
||||||
this._setEngine(TYPING_BOOSTER_ENGINE, callback);
|
await this._setEngine(TYPING_BOOSTER_ENGINE);
|
||||||
} else if (this._preOskEngine) {
|
} else if (this._preOskEngine) {
|
||||||
this._setEngine(this._preOskEngine, callback);
|
await this._setEngine(this._preOskEngine);
|
||||||
delete this._preOskEngine;
|
delete this._preOskEngine;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -2105,12 +2105,18 @@ class KeyboardController extends Signals.EventEmitter {
|
|||||||
Main.inputMethod.commit(str);
|
Main.inputMethod.commit(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
set oskCompletion(enabled) {
|
async _setOskCompletion(enabled) {
|
||||||
if (this._oskCompletionEnabled === enabled)
|
if (this._oskCompletionEnabled === enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._oskCompletionEnabled =
|
this._oskCompletionEnabled =
|
||||||
IBusManager.getIBusManager().setCompletionEnabled(enabled, () => Main.inputMethod.update());
|
await IBusManager.getIBusManager().setCompletionEnabled(enabled);
|
||||||
|
|
||||||
|
Main.inputMethod.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
set oskCompletion(enabled) {
|
||||||
|
this._setOskCompletion(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
keyvalPress(keyval) {
|
keyvalPress(keyval) {
|
||||||
|
@ -495,7 +495,7 @@ export class InputSourceManager extends Signals.EventEmitter {
|
|||||||
this._changePerWindowSource();
|
this._changePerWindowSource();
|
||||||
}
|
}
|
||||||
|
|
||||||
activateInputSource(is, interactive) {
|
async activateInputSource(is, interactive) {
|
||||||
// The focus changes during holdKeyboard/releaseKeyboard may trick
|
// The focus changes during holdKeyboard/releaseKeyboard may trick
|
||||||
// the client into hiding UI containing the currently focused entry.
|
// the client into hiding UI containing the currently focused entry.
|
||||||
// So holdKeyboard/releaseKeyboard are not called when
|
// So holdKeyboard/releaseKeyboard are not called when
|
||||||
@ -519,10 +519,10 @@ export class InputSourceManager extends Signals.EventEmitter {
|
|||||||
else
|
else
|
||||||
engine = 'xkb:us::eng';
|
engine = 'xkb:us::eng';
|
||||||
|
|
||||||
|
await this._ibusManager.setEngine(engine);
|
||||||
if (!this._reloading)
|
if (!this._reloading)
|
||||||
this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
|
KeyboardManager.releaseKeyboard();
|
||||||
else
|
|
||||||
this._ibusManager.setEngine(engine);
|
|
||||||
this._currentInputSourceChanged(is);
|
this._currentInputSourceChanged(is);
|
||||||
|
|
||||||
if (interactive)
|
if (interactive)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user