Theme switcher: Disconnect from extension manager

This commit is contained in:
Romain Vigier
2022-10-30 13:02:09 +01:00
parent 435d723f3e
commit ea53f9dbca
+16 -1
View File
@@ -74,6 +74,8 @@ var SwitcherTheme = class extends Switcher {
} }
set systemSettings(settings) { set systemSettings(settings) {
if (settings === this.#systemSettings)
return;
this.#systemSettings = settings; this.#systemSettings = settings;
this.disable(); this.disable();
this.enable(); this.enable();
@@ -183,6 +185,7 @@ var SwitcherThemeIcon = class extends SwitcherTheme {
var SwitcherThemeShell = class extends SwitcherTheme { var SwitcherThemeShell = class extends SwitcherTheme {
#settings; #settings;
#extensionManagerConnection = null;
constructor({ timer }) { constructor({ timer }) {
const settings = extensionUtils.getSettings(`${Me.metadata['settings-schema']}.shell-variants`); const settings = extensionUtils.getSettings(`${Me.metadata['settings-schema']}.shell-variants`);
@@ -194,10 +197,22 @@ var SwitcherThemeShell = class extends SwitcherTheme {
themeKey: 'name', themeKey: 'name',
noSettingsUpdateSystemThemeCallback: time => this.#noSettingsUpdateSystemThemeCallback(time), noSettingsUpdateSystemThemeCallback: time => this.#noSettingsUpdateSystemThemeCallback(time),
}); });
extensionManager.connect('extension-state-changed', this.#onExtensionStateChanged.bind(this));
this.#settings = settings; this.#settings = settings;
} }
enable() {
super.enable();
this.#extensionManagerConnection = extensionManager.connect('extension-state-changed', this.#onExtensionStateChanged.bind(this));
}
disable() {
super.disable();
if (this.#extensionManagerConnection) {
extensionManager.disconnect(this.#extensionManagerConnection);
this.#extensionManagerConnection = null;
}
}
#noSettingsUpdateSystemThemeCallback(time) { #noSettingsUpdateSystemThemeCallback(time) {
const shellTheme = this.#settings.get_string(time); const shellTheme = this.#settings.get_string(time);
const stylesheet = utils.getShellThemeStylesheet(shellTheme); const stylesheet = utils.getShellThemeStylesheet(shellTheme);