From 0a23df721efd4c20489f8a6a05d2ce08508eff2b Mon Sep 17 00:00:00 2001 From: "mr. M" Date: Fri, 11 Oct 2024 23:02:43 +0200 Subject: [PATCH] Tried to fix " Closing Tabs opened from SidePanel renders the browser unusable" --- src/ZenSidebarManager.mjs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ZenSidebarManager.mjs b/src/ZenSidebarManager.mjs index d963045..5530098 100644 --- a/src/ZenSidebarManager.mjs +++ b/src/ZenSidebarManager.mjs @@ -12,6 +12,7 @@ class ZenBrowserManagerSidebar extends ZenDOMOperatedFeature { forwardButton = null; backButton = null; progressListener = null; + _tabBrowserSet = new WeakMap(); tabBox; DEFAULT_MOBILE_USER_AGENT = 'Mozilla/5.0 (Android 12; Mobile; rv:129.0) Gecko/20100101 Firefox/131.0'; @@ -497,19 +498,29 @@ class ZenBrowserManagerSidebar extends ZenDOMOperatedFeature { }; } + getTabForBrowser(browser) { + return this._tabBrowserSet.get(browser); + } + + setTabForBrowser(browser, tab) { + this._tabBrowserSet.set(browser, tab); + } + + removeTabForBrowser(browser) { + this._tabBrowserSet.delete(browser); + } + _createWebPanelBrowser(data) { const titleContainer = document.getElementById('zen-sidebar-web-panel-title'); titleContainer.textContent = 'Loading...'; let browser = gBrowser.createBrowser({}); const tab = this.sidebar.querySelector(`[zen-sidebar-id='${data.id}']`); - gBrowser._tabForBrowser.set(browser, tab); + this.setTabForBrowser(browser, tab); tab.linkedBrowser = browser; + tab.permanentKey = browser.permanentKey; browser.setAttribute('disablefullscreen', 'true'); browser.setAttribute('src', data.url); browser.setAttribute('zen-sidebar-id', data.id); - browser.setAttribute('autoscroll', 'false'); - browser.setAttribute('autocompletepopup', 'PopupAutoComplete'); - browser.setAttribute('contextmenu', 'contentAreaContextMenu'); browser.addEventListener( 'pagetitlechanged', function (event) { @@ -725,6 +736,7 @@ class ZenBrowserManagerSidebar extends ZenDOMOperatedFeature { contextUnload() { let browser = this._getBrowserById(this.contextTab); + this.removeTabForBrowser(browser); browser.remove(); document.getElementById('zen-sidebar-web-panel-title').textContent = ''; this._closeSidebarPanel();