extensionPrefs: Always redefine getCurrentExtension() on prefsModule access
We have three interactions with an extension's prefs module: - we import the module - we call its init() hook - we call its buildPrefsWidget() hook The first two are one-time actions where we expect most getCurrentExtension() calls (local imports, initTranslations() etc.). However it's still possible that the extension will use the utility function in buildPrefsWidget() as well, either directly or via other functions like getSettings(): Make sure getCurrentExtension() returns the correct extension in that case, not the last one whose preferences were initialized. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/873
This commit is contained in:
parent
2703eed446
commit
a2044c61ae
@ -657,12 +657,12 @@ class ExtensionRow extends Gtk.ListBoxRow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get prefsModule() {
|
get prefsModule() {
|
||||||
|
// give extension prefs access to their own extension object
|
||||||
|
ExtensionUtils.getCurrentExtension = () => this._extension;
|
||||||
|
|
||||||
if (!this._prefsModule) {
|
if (!this._prefsModule) {
|
||||||
ExtensionUtils.installImporter(this._extension);
|
ExtensionUtils.installImporter(this._extension);
|
||||||
|
|
||||||
// give extension prefs access to their own extension object
|
|
||||||
ExtensionUtils.getCurrentExtension = () => this._extension;
|
|
||||||
|
|
||||||
this._prefsModule = this._extension.imports.prefs;
|
this._prefsModule = this._extension.imports.prefs;
|
||||||
this._prefsModule.init(this._extension.metadata);
|
this._prefsModule.init(this._extension.metadata);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user