diff --git a/js/dbusServices/extensions/extensionPrefsDialog.js b/js/dbusServices/extensions/extensionPrefsDialog.js index 6c1b5d508..50b2e92f5 100644 --- a/js/dbusServices/extensions/extensionPrefsDialog.js +++ b/js/dbusServices/extensions/extensionPrefsDialog.js @@ -9,6 +9,9 @@ import Gtk from 'gi://Gtk?version=4.0'; export const ExtensionPrefsDialog = GObject.registerClass({ GTypeName: 'ExtensionPrefsDialog', + Signals: { + 'loaded': {}, + }, }, class ExtensionPrefsDialog extends Adw.PreferencesWindow { _init(extension) { super._init({ @@ -21,7 +24,7 @@ export const ExtensionPrefsDialog = GObject.registerClass({ this._loadPrefs().catch(e => { this._showErrorPage(e); logError(e, 'Failed to open preferences'); - }); + }).finally(() => this.emit('loaded')); } async _loadPrefs() { diff --git a/js/dbusServices/extensions/extensionsService.js b/js/dbusServices/extensions/extensionsService.js index 0d60fb60e..f3f8f4156 100644 --- a/js/dbusServices/extensions/extensionsService.js +++ b/js/dbusServices/extensions/extensionsService.js @@ -137,6 +137,8 @@ export const ExtensionsService = class extends ServiceImplementation { const extension = extensionManager.createExtensionObject(serialized); this._prefsDialog = new ExtensionPrefsDialog(extension); + this._prefsDialog.connect('loaded', + () => this._prefsDialog.show()); this._prefsDialog.connect('realize', () => { let externalWindow = null; @@ -157,8 +159,6 @@ export const ExtensionsService = class extends ServiceImplementation { }); this.hold(); - this._prefsDialog.show(); - invocation.return_value(null); } catch (error) { this._handleError(invocation, error);