From bcdb905ad601319005d872c7d80804be54099324 Mon Sep 17 00:00:00 2001 From: "mr. m" Date: Mon, 2 Mar 2026 09:58:49 +0100 Subject: [PATCH] feat: Correctly mark tab visibility inside active folders, b=no-bug, c=common, folders --- .../components/tabbrowser/content/tab-js.patch | 6 +++--- src/zen/common/styles/zen-panel-ui.css | 2 +- src/zen/folders/ZenFolders.mjs | 13 +++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/browser/components/tabbrowser/content/tab-js.patch b/src/browser/components/tabbrowser/content/tab-js.patch index feb3f6822..e995a07b7 100644 --- a/src/browser/components/tabbrowser/content/tab-js.patch +++ b/src/browser/components/tabbrowser/content/tab-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js -index 836bee14d2b63604688ebe477a5d915a5e99b305..a675aed711560b4a44604fc17478cffa7fb68439 100644 +index 836bee14d2b63604688ebe477a5d915a5e99b305..53b6cb827b1199b314b0e6543055fe7b074b0dfa 100644 --- a/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js @@ -21,6 +21,7 @@ @@ -65,11 +65,11 @@ index 836bee14d2b63604688ebe477a5d915a5e99b305..a675aed711560b4a44604fc17478cffa + return false; + } + // Selected tabs are always visible -+ if (this.selected || this.multiselected || this.hasAttribute("folder-active")) return true; ++ if (this.selected || this.multiselected) return true; + // Recursively check all parent groups + let currentParent = this.group; + while (currentParent) { -+ if (currentParent.collapsed) { ++ if (currentParent.collapsed && !currentParent.activeTabs.includes(this)) { + return false; + } + currentParent = currentParent.group; diff --git a/src/zen/common/styles/zen-panel-ui.css b/src/zen/common/styles/zen-panel-ui.css index 658266649..10788b3d0 100644 --- a/src/zen/common/styles/zen-panel-ui.css +++ b/src/zen/common/styles/zen-panel-ui.css @@ -30,7 +30,7 @@ panel[type="arrow"]:not(#feature-callout) { } @media (-moz-platform: macos) { - &:where([nativepopover="true"]) { + &:where(:not([nativepopover="true"])) { appearance: auto !important; -moz-default-appearance: menupopup; /* We set the default background here, rather than on ::part(content), diff --git a/src/zen/folders/ZenFolders.mjs b/src/zen/folders/ZenFolders.mjs index ed99a920a..94b26852d 100644 --- a/src/zen/folders/ZenFolders.mjs +++ b/src/zen/folders/ZenFolders.mjs @@ -1140,9 +1140,7 @@ class nsZenFolders extends nsZenDOMOperatedFeature { } gBrowser.tabContainer._invalidateCachedTabs(); - setTimeout(() => { - delete this._sessionRestoring; - }, 0); + delete this._sessionRestoring; } /** @@ -1278,7 +1276,7 @@ class nsZenFolders extends nsZenDOMOperatedFeature { } get #folderAnimationDuration() { - return this._sessionRestoring || this._dontAnimateFolder ? 0 : 0.12; + return this._dontAnimateFolder ? 0 : 0.12; } async animateCollapse(group) { @@ -1696,7 +1694,10 @@ class nsZenFolders extends nsZenDOMOperatedFeature { for (let i = 0; i < groupItems.length; i++) { const { item, splitViewId } = groupItems[i]; - itemsToShow.push(item); + let itemVisible = item.visible; + if (itemVisible) { + itemsToShow.push(item); + } // Skip selected items if (selectedTabs.includes(item)) { @@ -1708,7 +1709,7 @@ class nsZenFolders extends nsZenDOMOperatedFeature { continue; } - if (!item.hasAttribute?.("folder-active")) { + if (!itemVisible) { if (!itemsToHide.includes(item)) { itemsToHide.push(item); }