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:
Sundeep Mediratta 2024-08-01 19:18:33 -04:00 committed by Florian Müllner
parent 8af1a1dfb9
commit ce89b15bb1
3 changed files with 20 additions and 20 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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)