From b8d9d79ccc3abfc42a5cd843ef13c4a74b8dd0ff Mon Sep 17 00:00:00 2001 From: "mr. M" Date: Thu, 31 Oct 2024 14:26:21 +0100 Subject: [PATCH] Refactor ZenGlanceManager.mjs to destroy current browser when closing glance --- src/ZenGlanceManager.mjs | 1 + src/ZenTabUnloader.mjs | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/ZenGlanceManager.mjs b/src/ZenGlanceManager.mjs index 2d840bf..593faa7 100644 --- a/src/ZenGlanceManager.mjs +++ b/src/ZenGlanceManager.mjs @@ -163,6 +163,7 @@ this.browserWrapper.removeAttribute("animate-end"); setTimeout(() => { + this.#currentBrowser?.destroy(); this.#currentBrowser?.remove(); this.#currentTab?.remove(); this.#currentBrowser = null; diff --git a/src/ZenTabUnloader.mjs b/src/ZenTabUnloader.mjs index 91d1c20..fc7d070 100644 --- a/src/ZenTabUnloader.mjs +++ b/src/ZenTabUnloader.mjs @@ -115,9 +115,11 @@ } const currentTimestamp = Date.now(); const excludedUrls = this.excludedUrls; - for (const tab of this.unloader.tabs) { + const tabs = gBrowser.tabs; + for (let i = 0; i < tabs.length; i++) { + const tab = tabs[i]; if (this.unloader.canUnloadTab(tab, currentTimestamp, excludedUrls)) { - tab.ownerGlobal.gBrowser.discardBrowser(tab); + this.unloader.unload(tab); } } } @@ -216,23 +218,31 @@ document.getElementById('context_closeDuplicateTabs').parentNode.appendChild(element); } + unload(tab) { + gBrowser.discardBrowser(tab); + tab.removeAttribute('linkedpanel'); + } + unloadTab() { const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab]; - for (const tab of tabs) { - gBrowser.discardBrowser(tab); + for (let i = 0; i < tabs.length; i++) { + const tab = tabs[i]; + this.unload(tab); } } preventUnloadTab() { const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab]; - for (const tab of tabs) { + for (let i = 0; i < tabs.length; i++) { + const tab = tabs[i]; tab.zenIgnoreUnload = true; } } ignoreUnloadTab() { const tabs = TabContextMenu.contextTab.multiselected ? gBrowser.selectedTabs : [TabContextMenu.contextTab]; - for (const tab of tabs) { + for (let i = 0; i < tabs.length; i++) { + const tab = tabs[i]; tab.zenIgnoreUnload = false; } }