From b8213569e52edb373351a58d37a812e3d5438d0f Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Tue, 27 May 2025 17:14:10 +0200 Subject: [PATCH] feat: Disable opening link on split view if the limit is reached, b=(no-bug), c=common, split-view --- src/zen/common/ZenSessionStore.mjs | 2 +- src/zen/split-view/ZenViewSplitter.mjs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/zen/common/ZenSessionStore.mjs b/src/zen/common/ZenSessionStore.mjs index 03ed3490..447a169b 100644 --- a/src/zen/common/ZenSessionStore.mjs +++ b/src/zen/common/ZenSessionStore.mjs @@ -87,7 +87,7 @@ } async #waitAndCleanup() { - await SessionStore.promiseInitialized; + await SessionStore.promiseAllWindowsRestored; await this.#resolveGlanceTabs(); this.#cleanup(); } diff --git a/src/zen/split-view/ZenViewSplitter.mjs b/src/zen/split-view/ZenViewSplitter.mjs index eb571d67..f1b820ca 100644 --- a/src/zen/split-view/ZenViewSplitter.mjs +++ b/src/zen/split-view/ZenViewSplitter.mjs @@ -1151,6 +1151,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { this.tabBrowserPanel.removeAttribute('zen-split-view'); this.currentView = -1; this.toggleWrapperDisplay(false); + this.maybeDisableOpeningTabOnSplitView(); } /** @@ -1308,6 +1309,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { }); } }); + this.maybeDisableOpeningTabOnSplitView(); } /** @@ -1861,6 +1863,24 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { this.onLocationChange(gBrowser.selectedTab.linkedBrowser); } } + + maybeDisableOpeningTabOnSplitView() { + document + .getElementById('cmd_zenSplitViewLinkInNewTab') + .setAttribute('disabled', !this.canOpenLinkInSplitView()); + } + + canOpenLinkInSplitView() { + const currentView = this.currentView; + if (currentView < 0) { + return true; + } + const group = this._data[currentView]; + if (!group || group.tabs.length >= this.MAX_TABS) { + return false; + } + return true; + } } window.gZenViewSplitter = new ZenViewSplitter();