From a2044c61ae0112f341e33891e7614883b80fb046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 30 Nov 2019 19:15:14 +0100 Subject: [PATCH] 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 --- js/extensionPrefs/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js index 387f7f325..9d94c5a27 100644 --- a/js/extensionPrefs/main.js +++ b/js/extensionPrefs/main.js @@ -657,12 +657,12 @@ class ExtensionRow extends Gtk.ListBoxRow { } get prefsModule() { + // give extension prefs access to their own extension object + ExtensionUtils.getCurrentExtension = () => this._extension; + if (!this._prefsModule) { 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.init(this._extension.metadata); }