diff --git a/src/browser/base/content/ZenUIManager.mjs b/src/browser/base/content/ZenUIManager.mjs index ca335472..ca1aaecd 100644 --- a/src/browser/base/content/ZenUIManager.mjs +++ b/src/browser/base/content/ZenUIManager.mjs @@ -414,7 +414,7 @@ var gZenVerticalTabsManager = { gBrowser.tabContainer.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); gBrowser.tabContainer.arrowScrollbox.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); // on purpose, we set the orient to horizontal, because the arrowScrollbox is vertical - gBrowser.tabContainer.arrowScrollbox.scrollbox.setAttribute('orient', isVerticalTabs ? 'horizontal' : 'vertical'); + gBrowser.tabContainer.arrowScrollbox.scrollbox.setAttribute('orient', (isVerticalTabs && ZenWorkspaces.workspaceEnabled) ? 'horizontal' : 'vertical'); const buttonsTarget = document.getElementById('zen-sidebar-top-buttons-customization-target'); if (isRightSide) { diff --git a/src/browser/base/content/zen-styles/zen-workspaces.css b/src/browser/base/content/zen-styles/zen-workspaces.css index 32f2a7c9..288032e8 100644 --- a/src/browser/base/content/zen-styles/zen-workspaces.css +++ b/src/browser/base/content/zen-styles/zen-workspaces.css @@ -457,6 +457,7 @@ max-height: var(--zen-workspace-indicator-height); min-height: var(--zen-workspace-indicator-height); gap: 12px; + white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-direction: row !important; diff --git a/src/browser/base/zen-components/ZenWorkspaces.mjs b/src/browser/base/zen-components/ZenWorkspaces.mjs index 421f46a8..65c0a824 100644 --- a/src/browser/base/zen-components/ZenWorkspaces.mjs +++ b/src/browser/base/zen-components/ZenWorkspaces.mjs @@ -1500,7 +1500,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } } - async _animateTabs(newWorkspace, shouldAnimate) { + async _animateTabs(newWorkspace, shouldAnimate, tabToSelect = null) { this._animatingChange = true; const animations = []; const workspaces = await this._workspaces(); @@ -1534,11 +1534,18 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } if (offset === 0) { element.setAttribute('active', 'true'); + if (tabToSelect) { + gBrowser.selectedTab = tabToSelect; + tabToSelect._visuallySelected = false; + } } else { element.removeAttribute('active'); } } await Promise.all(animations); + if (tabToSelect) { + tabToSelect._visuallySelected = false; + } this._animatingChange = false; } @@ -1618,7 +1625,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { tabToSelect = newTab; } tabToSelect._visuallySelected = true; - this._lastSelectedWorkspaceTabs[window.uuid] = tabToSelect; // Always make sure we always unselect the tab from the old workspace if (currentSelectedTab && currentSelectedTab !== tabToSelect) { @@ -1641,8 +1647,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { gZenThemePicker.onWorkspaceChange(window); - await this._animateTabs(window, !onInit && !this._animatingChange); - gBrowser.selectedTab = tabToSelect; + await this._animateTabs(window, !onInit && !this._animatingChange, tabToSelect); // Notify listeners if (this._changeListeners?.length) { diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index e5ba0463..3863cf04 100644 --- a/src/browser/components/tabbrowser/content/tabbrowser-js.patch +++ b/src/browser/components/tabbrowser/content/tabbrowser-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js -index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c90119b4b248887fd8612beb9aac83c6eeb57088 100644 +index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..364bd46b5244c13139dec5a7f9401dbef2582976 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js @@ -406,11 +406,39 @@ @@ -57,8 +57,12 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c90119b4b248887fd8612beb9aac83c6 } aTab.setAttribute("pinned", "true"); this._updateTabBarForPinnedTabs(); -@@ -831,7 +859,7 @@ - this.tabContainer.arrowScrollbox.prepend(aTab); +@@ -828,10 +856,10 @@ + // the moving of a tab from the vertical pinned tabs container + // and back into arrowscrollbox. + aTab.removeAttribute("pinned"); +- this.tabContainer.arrowScrollbox.prepend(aTab); ++ ZenWorkspaces.activeWorkspaceStrip.prepend(aTab); }); } else { - this.moveTabTo(aTab, this.pinnedTabCount - 1, { @@ -112,11 +116,13 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c90119b4b248887fd8612beb9aac83c6 aTab.linkedPanel = uniqueId; // Inject the into the DOM if necessary. -@@ -2447,7 +2484,7 @@ +@@ -2446,8 +2483,8 @@ + // If we transitioned from one browser to two browsers, we need to set // hasSiblings=false on both the existing browser and the new browser. if (this.tabs.length == 2) { - this.tabs[0].linkedBrowser.browsingContext.hasSiblings = true; +- this.tabs[0].linkedBrowser.browsingContext.hasSiblings = true; - this.tabs[1].linkedBrowser.browsingContext.hasSiblings = true; ++ if (this.tabs[0].linkedBrowser.browsingContext) this.tabs[0].linkedBrowser.browsingContext.hasSiblings = true; + if (this.tabs[1].linkedBrowser.browsingContext) this.tabs[1].linkedBrowser.browsingContext.hasSiblings = true; } else { aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;