From dc8e589e9071dfca0055d90204e14e8665b6d2b4 Mon Sep 17 00:00:00 2001 From: Michael Guntsche Date: Sun, 29 Oct 2023 11:11:19 +0100 Subject: [PATCH] fix: Settings display This is a little hacky way to fix the issue with the preferences pane not displaying with GNOME45. Please note in the prefs case the assignment is not cleared on close. This can be done but requires a bigger rewrite to the prefs code. Closes #1663 --- src/extension.ts | 6 ++++++ src/log.ts | 4 +--- src/prefs.ts | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 5aab3e96..f34e865c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -2664,8 +2664,13 @@ export class Ext extends Ecs.System { let ext: Ext | null = null; let indicator: Indicator | null = null; +declare global { + var popShellExtension: any; +} + export default class PopShellExtension extends Extension { enable() { + globalThis.popShellExtension = this; log.info('enable'); if (!ext) { @@ -2714,6 +2719,7 @@ export default class PopShellExtension extends Extension { return; } + delete globalThis.popShellExtension; ext.injections_remove(); ext.signals_remove(); ext.exit_modes(); diff --git a/src/log.ts b/src/log.ts index 4274b617..db296cdf 100644 --- a/src/log.ts +++ b/src/log.ts @@ -1,5 +1,3 @@ -import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js'; - // simplified log4j levels export enum LOG_LEVELS { OFF, @@ -16,7 +14,7 @@ export function log_level() { // log.js is at the level of prefs.js where the popshell Ext instance // is not yet available or visible, so we have to use the built in // ExtensionUtils to get the current settings - let settings = Extension.lookupByURL(import.meta.url).getSettings(); + let settings = globalThis.popShellExtension.getSettings(); let log_level = settings.get_uint('log-level'); return log_level; diff --git a/src/prefs.ts b/src/prefs.ts index 74fa3d67..dca9275d 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -24,6 +24,7 @@ interface AppWidgets { export default class PopShellPreferences extends ExtensionPreferences { getPreferencesWidget() { + globalThis.popShellExtension = this; let dialog = settings_dialog_new(); if (dialog.show_all) { dialog.show_all();