diff --git a/l10n b/l10n index fb2f27225..19e2af33c 160000 --- a/l10n +++ b/l10n @@ -1 +1 @@ -Subproject commit fb2f27225e6ec810354ce4c95913d6a2105e200b +Subproject commit 19e2af33c4d901a4edece2b95c4372b40d50a942 diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index 442d59e72..35b747a11 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -119,6 +119,7 @@ pref('zen.view.compact.animate-sidebar', true); pref('zen.urlbar.replace-newtab', true); pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float +pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s) #ifdef XP_MACOSX // Disable for macos in the meantime until @HarryHeres finds a solution for hight DPI screens @@ -168,7 +169,7 @@ pref('zen.tab-unloader.excluded-urls', "example.com,example.org"); pref('zen.pinned-tab-manager.debug', false); pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false); -pref('zen.pinned-tab-manager.close-shortcut-behavior', 'switch'); +pref('zen.pinned-tab-manager.close-shortcut-behavior', 'unload-switch'); // TODO: Check this out! pref("browser.profiles.enabled", false); @@ -377,6 +378,7 @@ pref("browser.urlbar.quicksuggest.enabled", false); pref("browser.urlbar.suggest.quicksuggest.sponsored", false); pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); pref("browser.urlbar.groupLabels.enabled", false); +pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages pref("browser.formfill.enable", false); pref("security.insecure_connection_text.enabled", true); pref("security.insecure_connection_text.pbmode.enabled", true); diff --git a/src/browser/base/content/ZenStartup.mjs b/src/browser/base/content/ZenStartup.mjs index a8880efdd..a09e51f47 100644 --- a/src/browser/base/content/ZenStartup.mjs +++ b/src/browser/base/content/ZenStartup.mjs @@ -85,7 +85,6 @@ _initSidebarScrolling() { // Disable smooth scroll const canSmoothScroll = Services.prefs.getBoolPref('zen.startup.smooth-scroll-in-tabs', false); - const workspaceIndicator = document.getElementById('zen-current-workspace-indicator'); const tabsWrapper = document.getElementById('zen-browser-tabs-wrapper'); gBrowser.tabContainer.addEventListener('wheel', (event) => { if (canSmoothScroll) return; diff --git a/src/browser/base/content/ZenUIManager.mjs b/src/browser/base/content/ZenUIManager.mjs index 4c0fa5adc..93d919e99 100644 --- a/src/browser/base/content/ZenUIManager.mjs +++ b/src/browser/base/content/ZenUIManager.mjs @@ -8,6 +8,7 @@ var gZenUIManager = { document.addEventListener('popuphidden', this.onPopupHidden.bind(this)); XPCOMUtils.defineLazyPreferenceGetter(this, 'sidebarHeightThrottle', 'zen.view.sidebar-height-throttle', 500); XPCOMUtils.defineLazyPreferenceGetter(this, 'contentElementSeparation', 'zen.theme.content-element-separation', 0); + XPCOMUtils.defineLazyPreferenceGetter(this, 'urlbarWaitToClear', 'zen.urlbar.wait-to-clear', 0); ChromeUtils.defineLazyGetter(this, 'motion', () => { return ChromeUtils.importESModule('chrome://browser/content/zen-vendor/motion.min.mjs', { global: 'current' }); @@ -147,16 +148,28 @@ var gZenUIManager = { this.__currentPopupTrackElement = null; }, + get newtabButton() { + return ZenWorkspaces.activeWorkspaceStrip.querySelector('#tabs-newtab-button'); + }, + _prevUrlbarLabel: null, _lastSearch: '', + _clearTimeout: null, + _lastTab: null, handleNewTab(werePassedURL, searchClipboard, where) { const shouldOpenURLBar = Services.prefs.getBoolPref('zen.urlbar.replace-newtab') && !werePassedURL && !searchClipboard && where === 'tab'; if (shouldOpenURLBar) { + if (this._clearTimeout) { + clearTimeout(this._clearTimeout); + } + this._lastTab = gBrowser.selectedTab; + this._lastTab._visuallySelected = false; this._prevUrlbarLabel = gURLBar._untrimmedValue; gURLBar._zenHandleUrlbarClose = this.handleUrlbarClose.bind(this); gURLBar.setAttribute('zen-newtab', true); + this.newtabButton.setAttribute('in-urlbar', true); document.getElementById('Browser:OpenLocation').doCommand(); gURLBar.search(this._lastSearch); return true; @@ -164,16 +177,26 @@ var gZenUIManager = { return false; }, + clearUrlbarData() { + this._prevUrlbarLabel = null; + this._lastSearch = ''; + }, + handleUrlbarClose(onSwitch) { gURLBar._zenHandleUrlbarClose = null; gURLBar.removeAttribute('zen-newtab'); + this._lastTab._visuallySelected = true; + this._lastTab = null; + this.newtabButton.removeAttribute('in-urlbar'); if (onSwitch) { - this._prevUrlbarLabel = null; - this._lastSearch = ''; + this.clearUrlbarData(); } else { this._lastSearch = gURLBar._untrimmedValue; + this._clearTimeout = setTimeout(() => { + this.clearUrlbarData(); + }, this.urlbarWaitToClear); } - gURLBar.setURI(this._prevUrlbarLabel, false, false, false, true); + gURLBar.setURI(this._prevUrlbarLabel, onSwitch, false, false, !onSwitch); gURLBar.handleRevert(); if (gURLBar.focused) { gURLBar.view.close({ elementPicked: onSwitch }); @@ -392,6 +415,8 @@ 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'); const buttonsTarget = document.getElementById('zen-sidebar-top-buttons-customization-target'); if (isRightSide) { diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index 6d7f1a45c..bc2ef52de 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index a0a382643a2f74b6d789f3641ef300eed202d5e9..8b7b2ae3e7764d5dd77cd344f0cf67aea54a6f47 100644 +index a0a382643a2f74b6d789f3641ef300eed202d5e9..340475da315e67b2dd4f93567547cde703a90ee8 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ @@ -40,20 +40,17 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..8b7b2ae3e7764d5dd77cd344f0cf67ae + -+ -+ -+ -+ ++ + @@ -86,7 +83,7 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..8b7b2ae3e7764d5dd77cd344f0cf67ae diff --git a/src/browser/base/content/zen-styles/zen-browser-ui.css b/src/browser/base/content/zen-styles/zen-browser-ui.css index 255a9228f..0257ac92f 100644 --- a/src/browser/base/content/zen-styles/zen-browser-ui.css +++ b/src/browser/base/content/zen-styles/zen-browser-ui.css @@ -22,7 +22,7 @@ :root:is([inDOMFullscreen='true'], [chromehidden~='location'], [chromehidden~='toolbar']) { #navigator-toolbox, #zen-sidebar-splitter { - display: none; + visibility: collapse; } } @@ -51,7 +51,7 @@ &[animating='true']::after { background: var(--zen-main-browser-background-old); backdrop-filter: blur(5px); - animation: zen-main-app-wrapper-animation 0.5s ease forwards; + animation: zen-main-app-wrapper-animation 0.2s ease forwards; transition: 0s; } } diff --git a/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css b/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css index e96e2fc8a..d1b2cb365 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css @@ -28,7 +28,7 @@ --tab-min-height: 10px !important; } - #vertical-pinned-tabs-container-separator { + .vertical-pinned-tabs-container-separator { display: none !important; } @@ -214,7 +214,7 @@ } /* Other UI Elements */ - #zen-current-workspace-indicator { + .zen-current-workspace-indicator { display: none !important; } diff --git a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css index 03344faa4..2f30ea86a 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css @@ -87,17 +87,6 @@ width: -moz-available !important; } - .sharing-icon, - #identity-icon, - .urlbar-icon, - #permissions-granted-icon, - #tracking-protection-icon, - #tracking-protection-icon-box, - #blocked-permissions-container > .blocked-permission-icon { - width: 14px; - height: 14px; - } - #identity-icon-box, #identity-permission-box { margin-top: auto; @@ -128,7 +117,7 @@ } } -#vertical-pinned-tabs-container-separator { +.vertical-pinned-tabs-container-separator { background: light-dark(rgba(1, 1, 1, 0.075), rgba(255, 255, 255, 0.1)); margin: 8px auto; border: none; @@ -137,8 +126,8 @@ width: 98%; transition: margin 0.2s ease-in-out, background 0.2s ease-in-out, max-height 0.2s ease-in-out; - #vertical-pinned-tabs-container:not(:has(tab:not([hidden]))) + &, - #tabbrowser-tabs:not(:has(#tabbrowser-arrowscrollbox tab:not([hidden]))) & { + #vertical-pinned-tabs-container .zen-workspace-tabs-section[active]:not(:has(tab:not([hidden]))) &, + #tabbrowser-tabs:not(:has(#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[active] tab:not([hidden]))) & { max-height: 0; margin: 0 auto; } @@ -261,25 +250,18 @@ --tab-block-margin: 2px; --tab-selected-bgcolor: light-dark(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.12)); + --tab-selected-shadow: 0 1px 1px 1px light-dark(rgba(0, 0, 0, 0.09), rgba(0, 0, 0, 0.1)) !important; grid-gap: 0 !important; &[overflow]::after, - #vertical-tabs-newtab-button { + #vertical-tabs-newtab-button, + #vertical-pinned-tabs-container-separator { /* notice #vertical-pinned-tabs-container-separator is an ID */ /* Hide separator they give us, eww */ display: none !important; } & .tabbrowser-tab { transition: scale 0.07s ease; - #tabbrowser-tabs &:not([zen-essential='true']) { - #tabbrowser-tabs[dont-animate-tabs] & { - opacity: 0; - } - - &:is([selected], [multiselected], [visuallyselected]) .tab-background { - box-shadow: 0 1px 1px 1px light-dark(rgba(0, 0, 0, 0.09), rgba(0, 0, 0, 0.1)); - } - } &:active { scale: 0.98; @@ -455,7 +437,7 @@ width: calc(100% - 10px) !important; } - & #zen-current-workspace-indicator-icon[no-icon='true'] { + & .zen-current-workspace-indicator-icon[no-icon='true'] { display: none; } @@ -535,7 +517,7 @@ } &:hover { - background: var(--toolbarbutton-hover-background) !important; + background: var(--toolbarbutton-hover-background); & image, label { @@ -586,11 +568,11 @@ #navigator-toolbox:not([zen-sidebar-expanded='true']) { max-width: var(--zen-toolbox-max-width) !important; min-width: var(--zen-toolbox-max-width) !important; - & #zen-current-workspace-indicator-name, + & .zen-current-workspace-indicator-name, & .toolbarbutton-text { display: none !important; } - & #zen-current-workspace-indicator { + & .zen-current-workspace-indicator { padding-left: 0; padding-right: 0; display: flex; @@ -902,10 +884,22 @@ @media (-moz-bool-pref: 'zen.tabs.show-newtab-vertical') { #tabs-newtab-button { display: flex !important; + transition: scale 0.1s ease; & .toolbarbutton-text { align-items: center; padding-top: 0; } + + &:active, + &[open] { + scale: 0.98; + } + + &[in-urlbar] { + background: var(--tab-selected-bgcolor) !important; + opacity: 1 !important; + box-shadow: var(--tab-selected-shadow); + } } #tabbrowser-arrowscrollbox-periphery { @@ -968,11 +962,7 @@ --tab-selected-bgcolor: light-dark(rgba(255, 255, 255, 0.85), rgba(255, 255, 255, 0.2)); - &[selected] .tab-background { - box-shadow: 0 1px 1px 1px light-dark(rgba(0, 0, 0, 0.09), rgba(0, 0, 0, 0.1)); - } - - &:not([selected], [multiselected="true"]) .tab-background { + &:not([visuallyselected], [multiselected="true"]) .tab-background { background: var(--zen-toolbar-element-bg); border: none; } @@ -1144,7 +1134,7 @@ box-shadow: -3px 0 6px -2px var(--toolbarbutton-active-background, rgba(0, 255, 0, 0.2)); } -/* Renaming tab */ +/* Renaming tabs */ .tab-label-container-editing { display: none !important; } @@ -1154,3 +1144,10 @@ overflow-x: scroll; margin: 0; } + +/* Section: tab workspaces stylings */ +.zen-workspace-tabs-section { + position: absolute; + transform: translateX(-100%); + min-width: 100%; +} diff --git a/src/browser/base/content/zen-styles/zen-theme.css b/src/browser/base/content/zen-styles/zen-theme.css index b5a75004d..480f65c52 100644 --- a/src/browser/base/content/zen-styles/zen-theme.css +++ b/src/browser/base/content/zen-styles/zen-theme.css @@ -157,6 +157,8 @@ --zen-themed-toolbar-bg: light-dark(var(--zen-branding-bg), #161616); --zen-themed-toolbar-bg-transparent: light-dark(var(--zen-branding-bg), #161616); + --zen-workspace-indicator-height: 45px; + @media (-moz-windows-mica) or (-moz-platform: macos) { background: transparent; --zen-themed-toolbar-bg-transparency: 0; @@ -169,7 +171,6 @@ --toolbar-field-background-color: var(--zen-colors-input-bg) !important; --arrowpanel-background: var(--zen-dialog-background) !important; - --tab-selected-shadow: none !important; --zen-big-shadow: 0 0 9.73px 0px light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.25)); /* Nativity */ @@ -213,7 +214,7 @@ --zen-colors-primary-foreground: color-mix(in srgb, var(--zen-primary-color) 80%, white 20%); --zen-colors-input-bg: color-mix(in srgb, var(--zen-primary-color) 1%, var(--zen-dark-color-mix-base) 99%); - --zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(53, 53, 53) 80%); + --zen-colors-border: color-mix(in srgb, var(--zen-colors-secondary) 20%, rgb(79, 79, 79) 80%); --zen-colors-border-contrast: color-mix(in srgb, var(--zen-colors-secondary) 10%, rgba(255, 255, 255, 0.11) 90%); --zen-dialog-background: var(--zen-dark-color-mix-base); diff --git a/src/browser/base/content/zen-styles/zen-urlbar.css b/src/browser/base/content/zen-styles/zen-urlbar.css index 208339888..fb8bf7d2a 100644 --- a/src/browser/base/content/zen-styles/zen-urlbar.css +++ b/src/browser/base/content/zen-styles/zen-urlbar.css @@ -11,7 +11,7 @@ #urlbar { --toolbarbutton-border-radius: 8px; - --urlbarView-separator-color: var(--zen-colors-border); + --urlbarView-separator-color: light-dark(hsl(0, 0%, 90%), hsl(0, 0%, 20%)); --urlbarView-hover-background: var(--toolbarbutton-hover-background); --urlbarView-highlight-background: var(--toolbarbutton-hover-background); border-radius: var(--toolbarbutton-border-radius); @@ -121,8 +121,12 @@ } #urlbar[breakout-extend='true'] #urlbar-background { - border: 1px solid var(--zen-colors-border) !important; - box-shadow: var(--zen-big-shadow) !important; + box-shadow: + inset 0 0 0.5px 1px hsla(0, 0%, 100%, 0.1), + /* 2. shadow ring 👇 */ 0 0 0 1px hsla(230, 13%, 9%, 0.075), + /* 3. multiple soft shadows 👇 */ 0 0.3px 0.4px hsla(230, 13%, 9%, 0.02), + 0 0.9px 1.5px hsla(230, 13%, 9%, 0.045), + 0 6.5px 12px hsla(230, 13%, 9%, 0.1) !important; backdrop-filter: none !important; } @@ -387,13 +391,14 @@ button.popup-notification-dropmarker { /* We cant have a transparent background with a backdrop-filter because on normal websites, the backdrop woudn't work, we would need to apply a clip-path to the site and that's not recommended due to performance issues */ - background-color: light-dark(rgb(247, 247, 247), var(--zen-branding-bg)) !important; + background-color: light-dark(hsl(0, 0%, 100%), hsl(0, 0%, 14%)) !important; + outline: 1px solid rgba(0, 0, 0, 0.3) !important; } } :root[zen-single-toolbar='true'] { #urlbar[open] { - min-width: 30vw; + min-width: 35vw; } &[zen-right-side='true'] #urlbar[open]:not([zen-floating-urlbar='true']) { @@ -405,12 +410,14 @@ button.popup-notification-dropmarker { z-index: 1000; max-width: 45vw; min-width: 45vw !important; - font-size: 1.1em; --urlbar-container-height: 55px !important; --urlbar-margin-inline: 10px !important; position: absolute; font-size: 1.15em !important; + @media (-moz-platform: macos) { + font-size: 1.5em !important; + } top: calc(var(--zen-toolbar-height) * 2) !important; --zen-urlbar-center: calc(var(--zen-urlbar-offset, 0px) + 28vw); @@ -491,10 +498,9 @@ button.popup-notification-dropmarker { } &:hover { - background-color: light-dark(var(--zen-colors-secondary), var(--zen-colors-primary)) !important; - - .urlbarView-favicon { - background-color: color-mix(in srgb, var(--zen-branding-bg-reverse) 20%, transparent 80%) !important; + .urlbarView-favicon, + & { + background-color: color-mix(in srgb, var(--zen-branding-bg-reverse) 5%, transparent 95%) !important; } .urlbarView-url, diff --git a/src/browser/base/content/zen-styles/zen-workspaces.css b/src/browser/base/content/zen-styles/zen-workspaces.css index a88c6a2aa..9fbe38108 100644 --- a/src/browser/base/content/zen-styles/zen-workspaces.css +++ b/src/browser/base/content/zen-styles/zen-workspaces.css @@ -446,11 +446,20 @@ } /* Mark workspaces indicator */ -#zen-current-workspace-indicator { +#zen-current-workspace-indicator-container { + margin-bottom: var(--zen-workspace-indicator-height); +} + +.zen-current-workspace-indicator { padding: 15px calc(4px + var(--tab-inline-padding)); font-weight: 600; - align-items: center; - position: relative; + position: absolute; + max-height: var(--zen-workspace-indicator-height); + min-height: var(--zen-workspace-indicator-height); + gap: 5px; + overflow: hidden; + text-overflow: ellipsis; + flex-direction: row !important; &::before { border-radius: var(--border-radius-medium); @@ -459,11 +468,11 @@ pointer-events: none; content: ''; position: absolute; - top: 6px; + top: 4px; left: 2px; z-index: -1; width: calc(100% - 4px); - height: calc(100% - 12px); + height: calc(100% - 10px); } &:hover, @@ -473,38 +482,23 @@ } } - & #zen-current-workspace-indicator-icon { - font-size: 14px; + & .zen-current-workspace-indicator-icon { + font-size: 12px; } - #zen-current-workspace-indicator-name { + .zen-current-workspace-indicator-name { font-size: 13px; opacity: 0.5; - - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; display: block; - - position: absolute; - max-width: calc(100% - var(--zen-toolbox-padding) * 4); - } - - & #zen-current-workspace-indicator-icon { - min-height: 16px; - } - - & #zen-current-workspace-indicator-icon:not([hidden]) + #zen-current-workspace-indicator-name { - padding-left: 24px; } } @media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') { - #zen-current-workspace-indicator { + #zen-current-workspace-indicator-container { display: none !important; } } -#zen-current-workspace-indicator[hidden='true'] { +#zen-current-workspace-indicator-container[hidden='true'] { display: none !important; } diff --git a/src/browser/base/zen-components/ZenGlanceManager.mjs b/src/browser/base/zen-components/ZenGlanceManager.mjs index 67760034c..ba9ecb0ec 100644 --- a/src/browser/base/zen-components/ZenGlanceManager.mjs +++ b/src/browser/base/zen-components/ZenGlanceManager.mjs @@ -67,7 +67,7 @@ } getTabPosition(tab) { - return Math.max(gBrowser.pinnedTabCount, tab._tPos); + return Math.max(gBrowser._numVisiblePinTabs, tab._tPos); } createBrowserElement(url, currentTab, existingTab = null) { @@ -491,8 +491,6 @@ index: this.getTabPosition(this.#currentTab), }); - this.#currentParentTab._visuallySelected = false; - this.browserWrapper.removeAttribute('style'); this.browserWrapper.removeAttribute('has-finished-animation'); this.browserWrapper.setAttribute('animate-full', true); @@ -501,6 +499,7 @@ this.#currentParentTab.removeAttribute('glance-id'); gBrowser.selectedTab = this.#currentTab; this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').classList.remove('zen-glance-background'); + this.#currentParentTab._visuallySelected = false; this.hideSidebarButtons(); gZenUIManager.motion .animate( @@ -575,6 +574,7 @@ DOMContentLoaded: {}, }, }, + matches: ['https://*/*'], }); } } diff --git a/src/browser/base/zen-components/ZenGradientGenerator.mjs b/src/browser/base/zen-components/ZenGradientGenerator.mjs index 8080d686a..125c45da7 100644 --- a/src/browser/base/zen-components/ZenGradientGenerator.mjs +++ b/src/browser/base/zen-components/ZenGradientGenerator.mjs @@ -614,7 +614,7 @@ // Reactivate the transition after the animation appWrapper.removeAttribute('post-animating'); }, 100); - }, 500); + }, 200); }); } diff --git a/src/browser/base/zen-components/ZenPinnedTabManager.mjs b/src/browser/base/zen-components/ZenPinnedTabManager.mjs index aa2f9213d..a3487fee7 100644 --- a/src/browser/base/zen-components/ZenPinnedTabManager.mjs +++ b/src/browser/base/zen-components/ZenPinnedTabManager.mjs @@ -648,7 +648,7 @@ moveToAnotherTabContainerIfNecessary(event, draggedTab) { const pinnedTabsTarget = - event.target.closest('#vertical-pinned-tabs-container') || event.target.closest('#zen-current-workspace-indicator'); + event.target.closest('#vertical-pinned-tabs-container') || event.target.closest('.zen-current-workspace-indicator'); const essentialTabsTarget = event.target.closest('#zen-essentials-container'); const tabsTarget = event.target.closest('#tabbrowser-arrowscrollbox'); @@ -717,7 +717,7 @@ removeTabContainersDragoverClass() { this.dragIndicator.remove(); this._dragIndicator = null; - document.getElementById('zen-current-workspace-indicator').removeAttribute('open'); + ZenWorkspaces.activeWorkspaceIndicator.removeAttribute('open'); } get dragIndicator() { @@ -738,11 +738,11 @@ const essentialTabsTarget = event.target.closest('#zen-essentials-container'); const tabsTarget = event.target.closest('#tabbrowser-arrowscrollbox'); const targetTab = event.target.closest('.tabbrowser-tab'); - if (event.target.closest('#zen-current-workspace-indicator')) { + if (event.target.closest('.zen-current-workspace-indicator')) { this.removeTabContainersDragoverClass(); - event.target.setAttribute('open', true); + ZenWorkspaces.activeWorkspaceIndicator.setAttribute('open', true); } else { - document.getElementById('zen-current-workspace-indicator').removeAttribute('open'); + ZenWorkspaces.activeWorkspaceIndicator.removeAttribute('open'); } // If there's no valid target tab, nothing to do diff --git a/src/browser/base/zen-components/ZenWorkspaces.mjs b/src/browser/base/zen-components/ZenWorkspaces.mjs index 6d8d867d7..117a3dd15 100644 --- a/src/browser/base/zen-components/ZenWorkspaces.mjs +++ b/src/browser/base/zen-components/ZenWorkspaces.mjs @@ -28,13 +28,18 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { this._resolvePinnedInitialized = resolve; }); + workspaceIndicatorXUL = ` + + + `; + async waitForPromises() { await Promise.all([this.promiseDBInitialized, this.promisePinnedInitialized, SessionStore.promiseAllWindowsRestored]); } async init() { if (!this.shouldHaveWorkspaces) { - document.getElementById('zen-current-workspace-indicator').setAttribute('hidden', 'true'); + document.getElementById('zen-current-workspace-indicator-container').setAttribute('hidden', 'true'); console.warn('ZenWorkspaces: !!! ZenWorkspaces is disabled in hidden windows !!!'); return; // We are in a hidden window, don't initialize ZenWorkspaces } @@ -77,6 +82,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { if (!this.workspaceEnabled) { return; } + this._pinnedTabsResizeObserver = new ResizeObserver(this.onPinnedTabsResize.bind(this)); await this.waitForPromises(); await this.initializeWorkspaces(); console.info('ZenWorkspaces: ZenWorkspaces initialized'); @@ -97,6 +103,114 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { ); } + registerPinnedResizeObserver() { + if (!this._hasInitializedTabsStrip) { + return; + } + this._pinnedTabsResizeObserver.disconnect(); + for (let element of document.getElementById('vertical-pinned-tabs-container').children) { + if (element.classList.contains('tabbrowser-tab')) { + continue; + } + this._pinnedTabsResizeObserver.observe(element); + } + } + + get activeWorkspaceStrip() { + if (!this.workspaceEnabled || !this._hasInitializedTabsStrip) { + return gBrowser.tabContainer.arrowScrollbox; + } + const activeWorkspace = this.activeWorkspace; + return document.querySelector( + `#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${activeWorkspace}"]` + ); + } + + get activeWorkspaceIndicator() { + return document.querySelector( + `#zen-current-workspace-indicator-container .zen-workspace-tabs-section[zen-workspace-id="${this.activeWorkspace}"]` + ); + } + + get tabboxChildren() { + return this.activeWorkspaceStrip.children; + } + + get pinnedTabsContainer() { + if (!this.workspaceEnabled || !this._hasInitializedTabsStrip) { + return document.getElementById('vertical-pinned-tabs-container'); + } + return document.querySelector( + `#vertical-pinned-tabs-container .zen-workspace-tabs-section[zen-workspace-id="${this.activeWorkspace}"]` + ); + } + + async initializeTabsStripSections() { + const perifery = document.getElementById('tabbrowser-arrowscrollbox-periphery'); + const tabs = gBrowser.tabContainer.allTabs.filter((tab) => !tab.pinned); + for (const workspace of (await this._workspaces()).workspaces) { + this._createWorkspaceTabsSection(workspace, tabs, perifery); + } + if (tabs.length) { + const defaultSelectedContainer = document.querySelector( + `#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${this.activeWorkspace}"]` + ); + for (const tab of tabs) { + // before to the last child (perifery) + defaultSelectedContainer.insertBefore(tab, defaultSelectedContainer.lastChild); + } + this.tabContainer._invalidateCachedTabs(); + } + perifery.setAttribute('hidden', 'true'); + this._hasInitializedTabsStrip = true; + this.registerPinnedResizeObserver(); + } + + _createWorkspaceSection(workspace) { + const section = document.createXULElement('vbox'); + section.className = 'zen-workspace-tabs-section'; + section.setAttribute('flex', '1'); + section.setAttribute('zen-workspace-id', workspace.uuid); + return section; + } + + async _createWorkspaceTabsSection(workspace, tabs, perifery) { + const container = gBrowser.tabContainer.arrowScrollbox; + const section = this._createWorkspaceSection(workspace); + container.appendChild(section); + + const pinnedContainer = document.getElementById('vertical-pinned-tabs-container'); + const pinnedSection = this._createWorkspaceSection(workspace); + this._organizeTabsToWorkspaceSections(workspace, section, pinnedSection, tabs); + section.appendChild(perifery.cloneNode(true)); + pinnedSection.appendChild( + window.MozXULElement.parseXULToFragment(` + + `) + ); + pinnedContainer.appendChild(pinnedSection); + + const workspaceIndicator = this._createWorkspaceSection(workspace); + workspaceIndicator.classList.add('zen-current-workspace-indicator'); + workspaceIndicator.appendChild(window.MozXULElement.parseXULToFragment(this.workspaceIndicatorXUL)); + document.getElementById('zen-current-workspace-indicator-container').appendChild(workspaceIndicator); + this.initIndicatorContextMenu(workspaceIndicator); + } + + _organizeTabsToWorkspaceSections(workspace, section, pinnedSection, tabs) { + const workspaceTabs = Array.from(tabs).filter((tab) => tab.getAttribute('zen-workspace-id') === workspace.uuid); + for (const tab of workspaceTabs) { + // remove tab from list + tabs.splice(tabs.indexOf(tab), 1); + if (tab.pinned) { + pinnedSection.appendChild(tab); + } else { + section.appendChild(tab); + } + } + this.tabContainer._invalidateCachedTabs(); + } + initializeWorkspaceNavigation() { this._setupAppCommandHandlers(); this._setupSidebarHandlers(); @@ -256,9 +370,8 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { const stripWidth = document.getElementById('tabbrowser-tabs').scrollWidth; const translateX = Math.max(-stripWidth, Math.min(delta, stripWidth)); - for (const element of this._animateTabsElements) { - element.style.transform = `translateX(${translateX}px)`; - } + const currentWorkspace = this.activeWorkspace; + this._organizeWorkspaceStripLocations({ uuid: currentWorkspace }, true, translateX); } async _handleSwipeEnd(event) { @@ -271,7 +384,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { let rawDirection = moveForward ? 1 : -1; if (this._swipeState.direction) { let direction = this.naturalScroll ? -1 : 1; - this.changeWorkspaceShortcut(rawDirection * direction); + this.changeWorkspaceShortcut(rawDirection * direction, true); } else { this._cancelSwipeAnimation(); } @@ -411,6 +524,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { this.activeWorkspace = activeWorkspace?.uuid; } } + await this.initializeTabsStripSections(); try { if (activeWorkspace) { window.gZenThemePicker = new ZenThemePicker(); @@ -420,11 +534,9 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { console.error('ZenWorkspaces: Error initializing theme picker', e); } } - this.initIndicatorContextMenu(); } - initIndicatorContextMenu() { - const indicator = document.getElementById('zen-current-workspace-indicator'); + initIndicatorContextMenu(indicator) { const th = (event) => { event.preventDefault(); event.stopPropagation(); @@ -738,7 +850,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { if (!browser.ZenWorkspaces.workspaceEnabled) { return; } - await browser.ZenWorkspaces.updateWorkspaceIndicator(); let workspaceList = browser.document.getElementById('PanelUI-zen-workspaces-list'); const createWorkspaceElement = (workspace) => { let element = browser.document.createXULElement('toolbarbutton'); @@ -1032,7 +1143,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { if (!this.workspaceEnabled) { return; } - let target = event.target.closest('#zen-current-workspace-indicator') || document.getElementById('zen-workspaces-button'); + let target = event.target.closest('.zen-current-workspace-indicator') || document.getElementById('zen-workspaces-button'); let panel = document.getElementById('PanelUI-zen-workspaces'); await this._propagateWorkspaceData({ ignoreStrip: true, @@ -1189,13 +1300,25 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } } + moveTabToWorkspace(tab, workspaceID) { + if (tab.getAttribute('zen-workspace-id') === workspaceID) { + return; + } + tab.setAttribute('zen-workspace-id', workspaceID); + const parent = tab.pinned ? '#zen-browser-tabs-pinned ' : '#zen-browser-tabs '; + const container = document.querySelector(parent + '.zen-browser-tabs-container'); + if (container) { + container.insertBefore(tab, container.firstChild); + } + } + _prepareNewWorkspace(window) { document.documentElement.setAttribute('zen-workspace-id', window.uuid); let tabCount = 0; for (let tab of gBrowser.tabs) { const isEssential = tab.getAttribute('zen-essential') === 'true'; if (!tab.hasAttribute('zen-workspace-id') && !tab.pinned && !isEssential) { - tab.setAttribute('zen-workspace-id', window.uuid); + this.moveTabToWorkspace(tab, window.uuid); tabCount++; } } @@ -1208,7 +1331,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { let tab = gZenUIManager.openAndChangeToTab(BROWSER_NEW_TAB_URL); if (window.uuid) { - tab.setAttribute('zen-workspace-id', window.uuid); + this.moveTabToWorkspace(tab, window.uuid); } } @@ -1281,29 +1404,15 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { await this._performWorkspaceChange(window, ...args); } finally { this._inChangingWorkspace = false; - this.tabContainer.removeAttribute('dont-animate-tabs'); } } _cancelSwipeAnimation() { - const existingTransform = this._animateTabsElements[0].style.transform; - const newTransform = 'translateX(0)'; - for (const element of this._animateTabsElements) { - gZenUIManager.motion.animate( - element, - { - transform: existingTransform ? [existingTransform, newTransform] : newTransform, - }, - { - type: 'spring', - bounce: 0, - duration: 0.12, - } - ); - } + const currentWorkspace = this.activeWorkspace; + this._animateTabs({ uuid: currentWorkspace }, true); } - async _performWorkspaceChange(window, { onInit = false, alwaysChange = false, explicitAnimationDirection = undefined } = {}) { + async _performWorkspaceChange(window, { onInit = false, alwaysChange = false, whileScrolling = false } = {}) { const previousWorkspace = await this.getActiveWorkspace(); alwaysChange = alwaysChange || onInit; @@ -1317,105 +1426,133 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { const workspaces = await this._workspaces(); // Refresh tab cache + gBrowser.verticalPinnedTabsContainer = this.pinnedTabsContainer; + gBrowser.tabContainer.verticalPinnedTabsContainer = this.pinnedTabsContainer; this.tabContainer._invalidateCachedTabs(); - - let animationDirection; - if (previousWorkspace && !onInit && !this._animatingChange) { - animationDirection = - explicitAnimationDirection ?? - (workspaces.workspaces.findIndex((w) => w.uuid === previousWorkspace.uuid) < - workspaces.workspaces.findIndex((w) => w.uuid === window.uuid) - ? 'right' - : 'left'); - } - if (animationDirection) { - // Animate tabs out of view before changing workspace, therefor we - // need to animate in the opposite direction - await this._animateTabs(animationDirection === 'left' ? 'right' : 'left', true); + if (!whileScrolling) { + await this._organizeWorkspaceStripLocations(previousWorkspace); } // First pass: Handle tab visibility and workspace ID assignment - const visibleTabs = this._processTabVisibility(window.uuid, containerId, workspaces); + this._processTabVisibility(window.uuid, containerId, workspaces); // Second pass: Handle tab selection - await this._handleTabSelection(window, onInit, visibleTabs, containerId, workspaces, previousWorkspace.uuid); + this.tabContainer._invalidateCachedTabs(); + await this._handleTabSelection(window, onInit, containerId, workspaces, previousWorkspace.uuid); + this.tabContainer._updateVerticalPinnedTabs(); // Update UI and state await this._updateWorkspaceState(window, onInit); + } - if (animationDirection) { - await this._animateTabs(animationDirection); + _updateMarginTopPinnedTabs(arrowscrollbox, pinnedContainer) { + if (arrowscrollbox) { + arrowscrollbox.style.marginTop = pinnedContainer.getBoundingClientRect().height + 'px'; } } - get _animateTabsElements() { - const selector = `#zen-browser-tabs-wrapper`; - const extraSelector = `#zen-current-workspace-indicator`; - return [...this.tabContainer.querySelectorAll(selector), ...this.tabContainer.querySelectorAll(extraSelector)]; - } - - async _animateTabs(direction, out = false) { - this.tabContainer.removeAttribute('dont-animate-tabs'); - const tabsWidth = this.tabContainer.getBoundingClientRect().width; - // order by actual position in the children list to animate - const elements = this._animateTabsElements; - if (out) { - const existingTransform = elements[0].style.transform; - const newTransform = `translateX(${direction === 'left' ? '-' : ''}${tabsWidth}px)`; - return gZenUIManager.motion.animate( - elements, - { - transform: existingTransform ? [existingTransform, newTransform] : newTransform, - }, - { - type: 'spring', - bounce: 0, - duration: 0.12, - } - ); + async _organizeWorkspaceStripLocations(workspace, justMove = false, offsetPixels = 0) { + const workspaces = await this._workspaces(); + let workspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === workspace.uuid); + if (!justMove) { + this._fixIndicatorsNames(workspaces); } - return gZenUIManager.motion.animate( - elements, - { - transform: [`translateX(${direction === 'left' ? '-' : ''}${tabsWidth}px)`, 'translateX(0px)'], - }, - { - duration: 0.15, - type: 'spring', - bounce: 0, + for (const otherWorkspace of workspaces.workspaces) { + const selector = `.zen-workspace-tabs-section[zen-workspace-id="${otherWorkspace.uuid}"]`; + const newTransform = -(workspaceIndex - workspaces.workspaces.indexOf(otherWorkspace)) * 100; + for (const container of document.querySelectorAll(selector)) { + container.style.transform = `translateX(${newTransform + offsetPixels / 2}%)`; + container.style.opacity = offsetPixels ? 1 : !newTransform; } - ); + if (!justMove) { + const pinnedContainerId = '#vertical-pinned-tabs-container '; + const arrowScrollboxId = '#tabbrowser-arrowscrollbox '; + const pinnedContainer = document.querySelector(pinnedContainerId + selector); + const arrowScrollbox = document.querySelector(arrowScrollboxId + selector); + this._updateMarginTopPinnedTabs(arrowScrollbox, pinnedContainer); + } + } + } + + updateWorkspaceIndicator(currentWorkspace, workspaceIndicator) { + if (!workspaceIndicator) { + return; + } + const indicatorName = workspaceIndicator.querySelector('.zen-current-workspace-indicator-name'); + const indicatorIcon = workspaceIndicator.querySelector('.zen-current-workspace-indicator-icon'); + + if (this.workspaceHasIcon(currentWorkspace)) { + indicatorIcon.removeAttribute('no-icon'); + } else { + indicatorIcon.setAttribute('no-icon', 'true'); + } + indicatorIcon.textContent = this.getWorkspaceIcon(currentWorkspace); + indicatorName.textContent = currentWorkspace.name; + } + + _fixIndicatorsNames(workspaces) { + for (const workspace of workspaces.workspaces) { + const workspaceIndicator = document.querySelector( + `#zen-current-workspace-indicator-container .zen-workspace-tabs-section[zen-workspace-id="${workspace.uuid}"]` + ); + this.updateWorkspaceIndicator(workspace, workspaceIndicator); + } + } + + async _animateTabs(newWorkspace, shouldAnimate) { + this._animatingChange = true; + const animations = []; + const workspaces = await this._workspaces(); + const newWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === newWorkspace.uuid); + for (const element of document.querySelectorAll('.zen-workspace-tabs-section')) { + const existingTransform = element.style.transform; + const elementWorkspaceId = element.getAttribute('zen-workspace-id'); + const elementWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === elementWorkspaceId); + const offset = -(newWorkspaceIndex - elementWorkspaceIndex) * 100; + const newTransform = `translateX(${offset}%)`; + const isCurrent = offset === 0; + if (shouldAnimate) { + if (isCurrent) { + element.style.opacity = 1; + } + animations.push( + gZenUIManager.motion.animate( + element, + { + transform: existingTransform ? [existingTransform, newTransform] : newTransform, + // -0 to convert to number + opacity: !isCurrent ? [!!offset - 0, !offset - 0] : [1, 1], + }, + { + type: 'spring', + bounce: 0, + duration: 0.3, + } + ) + ); + } + if (offset === 0) { + element.setAttribute('active', 'true'); + } else { + element.removeAttribute('active'); + } + } + await Promise.all(animations); + if (this._beforeSelectedTab) { + this._beforeSelectedTab._visuallySelected = false; + this._beforeSelectedTab = null; + } + this._animatingChange = false; } _processTabVisibility(workspaceUuid, containerId, workspaces) { - const visibleTabs = new Set(); - const lastSelectedTab = this._lastSelectedWorkspaceTabs[workspaceUuid]; - - this.tabContainer.setAttribute('dont-animate-tabs', 'true'); for (const tab of gBrowser.tabs) { - const tabWorkspaceId = tab.getAttribute('zen-workspace-id'); - const isEssential = tab.getAttribute('zen-essential') === 'true'; - - // Always hide last selected tabs from other workspaces - if (lastSelectedTab === tab && tabWorkspaceId !== workspaceUuid && !isEssential) { - gBrowser.hideTab(tab, undefined, true); - continue; - } - - if (this._shouldShowTab(tab, workspaceUuid, containerId, workspaces)) { - gBrowser.showTab(tab); - visibleTabs.add(tab); - - // Assign workspace ID if needed - if (!tabWorkspaceId && !isEssential) { - tab.setAttribute('zen-workspace-id', workspaceUuid); - } - } else { + if (!this._shouldShowTab(tab, workspaceUuid, containerId, workspaces)) { gBrowser.hideTab(tab, undefined, true); + } else if (tab.hasAttribute('zen-essential')) { + gBrowser.showTab(tab, undefined, true); } } - - return visibleTabs; } _shouldShowTab(tab, workspaceUuid, containerId, workspaces) { @@ -1446,15 +1583,15 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { // For non-essential tabs (both normal and pinned) if (!tabWorkspaceId) { // Assign workspace ID to tabs without one - tab.setAttribute('zen-workspace-id', workspaceUuid); + this.moveTabToWorkspace(tab, workspaceUuid); return true; } // Show if tab belongs to current workspace - return tabWorkspaceId === workspaceUuid; + return true; } - async _handleTabSelection(window, onInit, visibleTabs, containerId, workspaces, previousWorkspaceId) { + async _handleTabSelection(window, onInit, containerId, workspaces, previousWorkspaceId) { const currentSelectedTab = gBrowser.selectedTab; const oldWorkspaceId = previousWorkspaceId; const lastSelectedTab = this._lastSelectedWorkspaceTabs[window.uuid]; @@ -1465,26 +1602,18 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } let tabToSelect = null; - - // If current tab is visible in new workspace, keep it - if (this._shouldShowTab(currentSelectedTab, window.uuid, containerId, workspaces) && visibleTabs.has(currentSelectedTab)) { - tabToSelect = currentSelectedTab; - } // Try last selected tab if it is visible - else if ( - lastSelectedTab && - this._shouldShowTab(lastSelectedTab, window.uuid, containerId, workspaces) && - visibleTabs.has(lastSelectedTab) - ) { + if (lastSelectedTab && this._shouldShowTab(lastSelectedTab, window.uuid, containerId, workspaces)) { tabToSelect = lastSelectedTab; } // Find first suitable tab else { - tabToSelect = Array.from(visibleTabs).find((tab) => !tab.pinned); + tabToSelect = gBrowser.visibleTabs.find((tab) => !tab.pinned); + if (!tabToSelect && gBrowser.visibleTabs.length) { + tabToSelect = gBrowser.visibleTabs[gBrowser.visibleTabs.length - 1]; + } } - const previousSelectedTab = gBrowser.selectedTab; - // If we found a tab to select, select it if (tabToSelect) { gBrowser.selectedTab = tabToSelect; @@ -1495,17 +1624,19 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { gBrowser.selectedTab = newTab; this._lastSelectedWorkspaceTabs[window.uuid] = newTab; } - - // After selecting the new tab, hide the previous selected tab if it shouldn't be visible in the new workspace - if (!this._shouldShowTab(previousSelectedTab, window.uuid, containerId, workspaces)) { - gBrowser.hideTab(previousSelectedTab, undefined, true); - } + // Always make sure we always unselect the tab from the old workspace + currentSelectedTab._selected = false; + currentSelectedTab._visuallySelected = true; // we do want to animate the tab deselection + this._beforeSelectedTab = currentSelectedTab; } async _updateWorkspaceState(window, onInit) { // Update document state document.documentElement.setAttribute('zen-workspace-id', window.uuid); + // Recalculate new tab observers + gBrowser.tabContainer.observe(null, 'nsPref:changed', 'privacy.userContext.enabled'); + // Update workspace UI await this._updateWorkspacesChangeContextMenu(); document.getElementById('tabbrowser-tabs')._positionPinnedTabs(); @@ -1519,6 +1650,8 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } } + await this._animateTabs(window, !onInit && !this._animatingChange); + // Reset bookmarks this._invalidateBookmarkContainers(); @@ -1536,22 +1669,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } } - async updateWorkspaceIndicator() { - // Update current workspace indicator - const currentWorkspace = await this.getActiveWorkspace(); - if (!currentWorkspace) return; - const indicatorName = document.getElementById('zen-current-workspace-indicator-name'); - const indicatorIcon = document.getElementById('zen-current-workspace-indicator-icon'); - - if (this.workspaceHasIcon(currentWorkspace)) { - indicatorIcon.removeAttribute('no-icon'); - } else { - indicatorIcon.setAttribute('no-icon', 'true'); - } - indicatorIcon.textContent = this.getWorkspaceIcon(currentWorkspace); - indicatorName.textContent = currentWorkspace.name; - } - async _updateWorkspacesChangeContextMenu() { const workspaces = await this._workspaces(); @@ -1585,6 +1702,10 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { theme: ZenThemePicker.getTheme([]), }; this._prepareNewWorkspace(window); + const perifery = document.querySelector('#tabbrowser-arrowscrollbox-periphery[hidden]'); + preifery?.removeAttribute('hidden'); + this._createWorkspaceTabsSection(window, [], perifery); + preifery.setAttribute('hidden', 'true'); return window; } @@ -1595,9 +1716,23 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { let workspaceData = this._createWorkspaceData(name, isDefault, icon); await this.saveWorkspace(workspaceData); await this.changeWorkspace(workspaceData); + this.registerPinnedResizeObserver(); return workspaceData; } + onPinnedTabsResize(entries) { + if (!this.workspaceEnabled) { + return; + } + for (const entry of entries) { + const workspaceId = entry.target.getAttribute('zen-workspace-id'); + const arrowScrollbox = document.querySelector( + `#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]` + ); + this._updateMarginTopPinnedTabs(arrowScrollbox, entry.target); + } + } + async onTabBrowserInserted(event) { let tab = event.originalTarget; const isEssential = tab.getAttribute('zen-essential') === 'true'; @@ -1639,6 +1774,30 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } } + makeSurePinTabIsInCorrectPosition() { + const tabsInsidePinTab = Array.from(this.pinnedTabsContainer.parentElement.children).filter( + (child) => child.tagName === 'tab' + ); + let changed = false; + for (const tab of tabsInsidePinTab) { + if (tab.getAttribute('zen-essential') === 'true') { + continue; + } + const workspaceId = tab.getAttribute('zen-workspace-id'); + if (!workspaceId) { + continue; + } + const contaienr = document.querySelector( + `#vertical-pinned-tabs-container .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]` + ); + contaienr.insertBefore(tab, contaienr.firstChild); + changed = true; + } + if (changed) { + gBrowser.tabContainer._invalidateCachedTabs(); + } + } + // Context menu management _contextMenuId = null; @@ -1735,7 +1894,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { this._emojis = null; } - async changeWorkspaceShortcut(offset = 1) { + async changeWorkspaceShortcut(offset = 1, whileScrolling = false) { // Cycle through workspaces let workspaces = await this._workspaces(); let activeWorkspace = await this.getActiveWorkspace(); @@ -1752,7 +1911,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { } let nextWorkspace = workspaces.workspaces[targetIndex]; - await this.changeWorkspace(nextWorkspace, { explicitAnimationDirection: offset > 0 ? 'right' : 'left' }); + await this.changeWorkspace(nextWorkspace, { whileScrolling }); } _initializeWorkspaceTabContextMenus() { @@ -1774,7 +1933,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { document.getElementById('tabContextMenu').hidePopup(); const previousWorkspaceID = document.documentElement.getAttribute('zen-workspace-id'); for (let tab of tabs) { - tab.setAttribute('zen-workspace-id', workspaceID); + this.moveTabToWorkspace(tab, workspaceID); if (this._lastSelectedWorkspaceTabs[previousWorkspaceID] === tab) { // This tab is no longer the last selected tab in the previous workspace because it's being moved to // the current workspace diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js index ca5f3d2a9..87618112a 100644 --- a/src/browser/components/preferences/zen-settings.js +++ b/src/browser/components/preferences/zen-settings.js @@ -495,14 +495,10 @@ var gZenLooksAndFeel = { this._initializeColorPicker(this._getInitialAccentColor()); window.zenPageAccentColorChanged = this._handleAccentColorChange.bind(this); gZenMarketplaceManager.init(); - var onPreferColorSchemeChange = this.onPreferColorSchemeChange.bind(this); - window.matchMedia('(prefers-color-scheme: dark)').addListener(onPreferColorSchemeChange); for (const pref of [kZenExtendedSidebar, kZenSingleToolbar]) { Services.prefs.addObserver(pref, this); } - this.onPreferColorSchemeChange(); window.addEventListener('unload', () => { - window.matchMedia('(prefers-color-scheme: dark)').removeListener(onPreferColorSchemeChange); for (const pref of [kZenExtendedSidebar, kZenSingleToolbar]) { Services.prefs.removeObserver(pref, this); } @@ -549,16 +545,6 @@ var gZenLooksAndFeel = { } }, - onPreferColorSchemeChange(event) { - const darkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches; - let elem = document.getElementById('ZenDarkThemeStyles'); - if (darkTheme) { - elem.removeAttribute('hidden'); - } else { - elem.setAttribute('hidden', 'true'); - } - }, - setCompactModeStyle() { const chooser = document.getElementById('zen-compact-mode-styles-form'); const radios = [...chooser.querySelectorAll('input')]; diff --git a/src/browser/components/tabbrowser/content/tab-js.patch b/src/browser/components/tabbrowser/content/tab-js.patch index e888b83a4..06ba6a423 100644 --- a/src/browser/components/tabbrowser/content/tab-js.patch +++ b/src/browser/components/tabbrowser/content/tab-js.patch @@ -1,12 +1,12 @@ diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js -index d41c486c02a6f09dcff5741a59ad8b617294c481..0328460c7eb45d8ffb9de4f9b8d4a7bdd7a5b7b3 100644 +index d41c486c02a6f09dcff5741a59ad8b617294c481..abaccd1935fc117924c44dd22cae0b322fc6a0c4 100644 --- a/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js @@ -37,6 +37,7 @@ -+ ++ `; diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index 778fd492f..25ae209f8 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..c29a3620f85219074b2eeef8d75b4ca7232414e2 100644 +index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..efd8feef44ab820666e37cfe5aa75df60a2a6e35 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js @@ -406,11 +406,39 @@ @@ -44,15 +44,28 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c29a3620f85219074b2eeef8d75b4ca7 } return i; } -@@ -807,7 +835,7 @@ +@@ -807,10 +835,10 @@ this.showTab(aTab); if (this.tabContainer.verticalMode) { this._handleTabMove(aTab, () => - this.verticalPinnedTabsContainer.appendChild(aTab) -+ aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.appendChild(aTab) ++ aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild) ); } else { - this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true }); +- this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true }); ++ this.moveTabTo(aTab, this._numVisiblePinTabs, { forceStandaloneTab: true }); + } + aTab.setAttribute("pinned", "true"); + this._updateTabBarForPinnedTabs(); +@@ -831,7 +859,7 @@ + this.tabContainer.arrowScrollbox.prepend(aTab); + }); + } else { +- this.moveTabTo(aTab, this.pinnedTabCount - 1, { ++ this.moveTabTo(aTab, this._numVisiblePinTabs - 1, { + forceStandaloneTab: true, + }); + aTab.removeAttribute("pinned"); @@ -1055,6 +1083,8 @@ let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; @@ -80,16 +93,16 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c29a3620f85219074b2eeef8d75b4ca7 oldTab.updateLastAccessed(); // if this is the foreground window, update the last-seen timestamps. if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { -@@ -1477,6 +1511,9 @@ - newBrowser && - gURLBar.getBrowserState(newBrowser).urlbarFocused && - gURLBar.focused; -+ if (gURLBar._zenHandleUrlbarClose) { -+ gURLBar._zenHandleUrlbarClose(true); -+ } - if (!keepFocusOnUrlBar) { - // Clear focus so that _adjustFocusAfterTabSwitch can detect if - // some element has been focused and respect that. +@@ -1462,6 +1496,9 @@ + } + + let activeEl = document.activeElement; ++ if (gURLBar._zenHandleUrlbarClose) { ++ gURLBar._zenHandleUrlbarClose(true); ++ } + // If focus is on the old tab, move it to the new tab. + if (activeEl == oldTab) { + newTab.focus(); @@ -1785,7 +1822,7 @@ } @@ -212,16 +225,36 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c29a3620f85219074b2eeef8d75b4ca7 if (select) { tabToSelect = tab; } +@@ -3464,8 +3552,8 @@ + // inserted in the DOM. If the tab is not yet in the DOM, + // just insert it in the right place from the start. + if (!tab.parentNode) { +- tab._tPos = this.pinnedTabCount; +- this.tabContainer.insertBefore(tab, this.tabs[this.pinnedTabCount]); ++ tab._tPos = this._numVisiblePinTabs; ++ this.tabContainer.insertBefore(tab, this.tabs[this._numVisiblePinTabs]); + tab.toggleAttribute("pinned", true); + this.tabContainer._invalidateCachedTabs(); + // Then ensure all the tab open/pinning information is sent. @@ -3729,7 +3817,7 @@ // Ensure we have an index if one was not provided. if (typeof index != "number") { // Move the new tab after another tab if needed, to the end otherwise. - index = Infinity; -+ index = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this.pinnedTabCount : Infinity; ++ index = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this._numVisiblePinTabs : Infinity; if ( !bulkOrderedOpen && ((openerTab && -@@ -3780,7 +3868,7 @@ +@@ -3773,14 +3861,14 @@ + // Ensure index is within bounds. + if (tab.pinned) { + index = Math.max(index, 0); +- index = Math.min(index, this.pinnedTabCount); ++ index = Math.min(index, this._numVisiblePinTabs); + } else { +- index = Math.max(index, this.pinnedTabCount); ++ index = Math.max(index, this._numVisiblePinTabs); + index = Math.min(index, this.tabs.length); } /** @type {MozTabbrowserTab|undefined} */ @@ -310,6 +343,18 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c29a3620f85219074b2eeef8d75b4ca7 aTab.selected || aTab.closing || // Tabs that are sharing the screen, microphone or camera cannot be hidden. +@@ -5706,9 +5805,9 @@ + + // Don't allow mixing pinned and unpinned tabs. + if (aTab.pinned) { +- aIndex = Math.min(aIndex, this.pinnedTabCount - 1); ++ aIndex = Math.min(aIndex, this._numVisiblePinTabs - 1); + } else { +- aIndex = Math.max(aIndex, this.pinnedTabCount); ++ aIndex = Math.max(aIndex, this._numVisiblePinTabs); + } + if (aTab._tPos == aIndex) { + return; @@ -5727,6 +5826,9 @@ this.tabContainer.insertBefore(aTab, neighbor); } @@ -320,6 +365,15 @@ index ff90a70bdad6c94ec4b90027ff102972d0eb28e5..c29a3620f85219074b2eeef8d75b4ca7 } moveTabToGroup(aTab, aGroup) { +@@ -5802,7 +5904,7 @@ + createLazyBrowser, + }; + +- let numPinned = this.pinnedTabCount; ++ let numPinned = this._numVisiblePinTabs; + if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) { + params.pinned = true; + } @@ -7443,6 +7545,7 @@ aWebProgress.isTopLevel ) { diff --git a/src/browser/components/tabbrowser/content/tabs-js.patch b/src/browser/components/tabbrowser/content/tabs-js.patch index 756161868..149134733 100644 --- a/src/browser/components/tabbrowser/content/tabs-js.patch +++ b/src/browser/components/tabbrowser/content/tabs-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js -index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441bde7b604 100644 +index 8aeb244ffca9f48661805f5b7d860b5896055562..ab0a6a6ed80608385b4663775b4edf67709dae7d 100644 --- a/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js @@ -94,7 +94,7 @@ @@ -101,7 +101,25 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 ) { delete draggedTab._dragData; return; -@@ -1512,9 +1525,19 @@ +@@ -1478,7 +1491,7 @@ + } + + get newTabButton() { +- return this.querySelector("#tabs-newtab-button"); ++ return ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button"); + } + + get verticalMode() { +@@ -1498,7 +1511,7 @@ + if (this.#allTabs) { + return this.#allTabs; + } +- let children = Array.from(this.arrowScrollbox.children); ++ let children = Array.from(ZenWorkspaces.tabboxChildren); + // remove arrowScrollbox periphery element + children.pop(); + +@@ -1512,14 +1525,28 @@ } this.#allTabs = [ @@ -117,12 +135,35 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 + // insert right after the parent tab + this.#allTabs.splice(Math.min(i + 1, lastPinnedTabIdx), 0, glanceTab); + i++; ++ } else if (this.#allTabs[i].classList.contains("vertical-pinned-tabs-container-separator")) { ++ // remove the separator from the list ++ this.#allTabs.splice(i, 1); ++ i--; + } + } return this.#allTabs; } -@@ -1593,6 +1616,7 @@ + get allGroups() { +- let children = Array.from(this.arrowScrollbox.children); ++ let children = Array.from(ZenWorkspaces.tabboxChildren); + return children.filter(node => node.tagName == "tab-group"); + } + +@@ -1574,10 +1601,8 @@ + return this.#focusableItems; + } + +- let verticalPinnedTabsContainer = document.getElementById( +- "vertical-pinned-tabs-container" +- ); +- let children = Array.from(this.arrowScrollbox.children); ++ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer; ++ let children = Array.from(ZenWorkspaces.tabboxChildren); + + let focusableItems = []; + for (let child of children) { +@@ -1593,6 +1618,7 @@ } this.#focusableItems = [ @@ -130,7 +171,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 ...verticalPinnedTabsContainer.children, ...focusableItems, ]; -@@ -1617,8 +1641,8 @@ +@@ -1617,8 +1643,8 @@ #isContainerVerticalPinnedExpanded(tab) { return ( this.verticalMode && @@ -141,7 +182,25 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 ); } -@@ -1816,7 +1840,7 @@ +@@ -1633,7 +1659,7 @@ + + if (node == null) { + // We have a container for non-tab elements at the end of the scrollbox. +- node = this.arrowScrollbox.lastChild; ++ node = ZenWorkspaces.activeWorkspaceStrip.lastChild; + } + + node.before(tab); +@@ -1733,7 +1759,7 @@ + // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and + // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); + // Attach the long click popup to all of them. +- const newTab = document.getElementById("new-tab-button"); ++ const newTab = ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button"); + const newTab2 = this.newTabButton; + const newTabVertical = document.getElementById( + "vertical-tabs-newtab-button" +@@ -1816,7 +1842,7 @@ let rect = ele => { return window.windowUtils.getBoundsWithoutFlushing(ele); }; @@ -150,7 +209,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 if (tab && rect(tab).width <= this._tabClipWidth) { this.setAttribute("closebuttons", "activetab"); } else { -@@ -1832,6 +1856,7 @@ +@@ -1832,6 +1858,7 @@ this.arrowScrollbox.ensureElementIsVisible(selectedTab, aInstant); } @@ -158,7 +217,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 selectedTab._notselectedsinceload = false; } -@@ -1843,7 +1868,7 @@ +@@ -1843,7 +1870,7 @@ return; } @@ -167,7 +226,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 if (!tabs.length) { return; } -@@ -1879,7 +1904,7 @@ +@@ -1879,7 +1906,7 @@ if (isEndTab && !this._hasTabTempMaxWidth) { return; } @@ -176,7 +235,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 // Force tabs to stay the same width, unless we're closing the last tab, // which case we need to let them expand just enough so that the overall // tabbar width is the same. -@@ -1894,7 +1919,7 @@ +@@ -1894,7 +1921,7 @@ let tabsToReset = []; for (let i = numPinned; i < tabs.length; i++) { let tab = tabs[i]; @@ -185,22 +244,40 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 if (!isEndTab) { // keep tabs the same width tab.style.transition = "none"; -@@ -1965,11 +1990,11 @@ - ); +@@ -1960,16 +1987,15 @@ + // Move pinned tabs to another container when the tabstrip is toggled to vertical + // and when session restore code calls _positionPinnedTabs; update styling whenever + // the number of pinned tabs changes. +- let verticalTabsContainer = document.getElementById( +- "vertical-pinned-tabs-container" +- ); ++ let verticalTabsContainer = this.verticalPinnedTabsContainer; let numPinned = gBrowser.pinnedTabCount; - if (gBrowser.pinnedTabCount !== verticalTabsContainer.children.length) { - let tabs = this.visibleTabs; -+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length + document.getElementById("zen-essentials-container").children.length)) { ++ ZenWorkspaces.makeSurePinTabIsInCorrectPosition(); ++ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - 1 + document.getElementById("zen-essentials-container").children.length)) { + let tabs = this.allTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")); for (let i = 0; i < numPinned; i++) { tabs[i].style.marginInlineStart = ""; - verticalTabsContainer.appendChild(tabs[i]); -+ tabs[i].hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(tabs[i]) : verticalTabsContainer.appendChild(tabs[i]); ++ tabs[i].hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(tabs[i]) : verticalTabsContainer.insertBefore(tabs[i], verticalTabsContainer.lastChild); } } -@@ -1992,8 +2017,8 @@ +@@ -1977,9 +2003,7 @@ + } + + _resetVerticalPinnedTabs() { +- let verticalTabsContainer = document.getElementById( +- "vertical-pinned-tabs-container" +- ); ++ let verticalTabsContainer = this.verticalPinnedTabsContainer; + + if (!verticalTabsContainer.children.length) { + return; +@@ -1992,8 +2016,8 @@ } _positionPinnedTabs() { @@ -211,7 +288,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 let absPositionHorizontalTabs = this.overflowing && tabs.length > numPinned && numPinned > 0; -@@ -2074,7 +2099,7 @@ +@@ -2074,7 +2098,7 @@ return; } @@ -220,7 +297,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 let directionX = screenX > dragData.animLastScreenX; let directionY = screenY > dragData.animLastScreenY; -@@ -2257,9 +2282,9 @@ +@@ -2257,9 +2281,9 @@ } let pinned = draggedTab.pinned; @@ -233,7 +310,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 pinned ? numPinned : undefined ); -@@ -2502,8 +2527,9 @@ +@@ -2502,8 +2526,9 @@ ); } @@ -245,7 +322,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 return; } -@@ -2668,9 +2694,9 @@ +@@ -2668,9 +2693,9 @@ function newIndex(aTab, index) { // Don't allow mixing pinned and unpinned tabs. if (aTab.pinned) { @@ -257,7 +334,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 } } -@@ -2754,7 +2780,7 @@ +@@ -2754,7 +2779,7 @@ } _notifyBackgroundTab(aTab) { @@ -266,7 +343,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 return; } -@@ -2772,12 +2798,14 @@ +@@ -2772,12 +2797,14 @@ selectedTab = { left: selectedTab.left, right: selectedTab.right, @@ -282,7 +359,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 selectedTab, ]; }) -@@ -2794,8 +2822,11 @@ +@@ -2794,8 +2821,11 @@ delete this._lastTabToScrollIntoView; // Is the new tab already completely visible? if ( @@ -296,7 +373,7 @@ index 8aeb244ffca9f48661805f5b7d860b5896055562..bffa5e0be62e73f380adf558c5df3441 ) { return; } -@@ -2803,21 +2834,29 @@ +@@ -2803,21 +2833,29 @@ if (this.arrowScrollbox.smoothScroll) { // Can we make both the new tab and the selected tab completely visible? if ( diff --git a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch index 4f76c0d50..f395eaa62 100644 --- a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs -index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211ce209ff1a 100644 +index 50968dc04b527438acf30151f0c2e92f8b45097c..ea9207399b205c84d1263a4de8a63b776e36eabd 100644 --- a/browser/components/urlbar/UrlbarInput.sys.mjs +++ b/browser/components/urlbar/UrlbarInput.sys.mjs @@ -67,6 +67,13 @@ XPCOMUtils.defineLazyPreferenceGetter( @@ -52,7 +52,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c } /** -@@ -1087,11 +1105,14 @@ export class UrlbarInput { +@@ -1087,7 +1105,11 @@ export class UrlbarInput { } if (!result.payload.providesSearchMode) { @@ -65,11 +65,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c } this.controller.recordSelectedResult(event, result); -- - if (isCanonized) { - this.controller.engagementEvent.record(event, { - result, -@@ -2144,6 +2165,11 @@ export class UrlbarInput { +@@ -2144,6 +2166,11 @@ export class UrlbarInput { this.setAttribute("breakout-extend", "true"); @@ -81,7 +77,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c // Enable the animation only after the first extend call to ensure it // doesn't run when opening a new window. if (!this.hasAttribute("breakout-extend-animate")) { -@@ -2163,6 +2189,11 @@ export class UrlbarInput { +@@ -2163,6 +2190,11 @@ export class UrlbarInput { return; } @@ -93,7 +89,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c this.removeAttribute("breakout-extend"); this.#updateTextboxPosition(); } -@@ -3305,7 +3336,7 @@ export class UrlbarInput { +@@ -3305,7 +3337,7 @@ export class UrlbarInput { } else { where = lazy.BrowserUtils.whereToOpenLink(event, false, false); } @@ -102,7 +98,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c if (where == "current") { where = "tab"; } else if (where == "tab") { -@@ -3859,6 +3890,11 @@ export class UrlbarInput { +@@ -3859,6 +3891,11 @@ export class UrlbarInput { } _on_click(event) { @@ -114,7 +110,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c if ( event.target == this.inputField || event.target == this._inputContainer || -@@ -3930,7 +3966,7 @@ export class UrlbarInput { +@@ -3930,7 +3967,7 @@ export class UrlbarInput { } } @@ -123,7 +119,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c this.view.autoOpen({ event }); } else { if (this._untrimOnFocusAfterKeydown) { -@@ -3970,9 +4006,12 @@ export class UrlbarInput { +@@ -3970,9 +4007,12 @@ export class UrlbarInput { } _on_mousedown(event) { @@ -137,7 +133,7 @@ index 50968dc04b527438acf30151f0c2e92f8b45097c..2948efd18fb1ee609695acd5b5b0211c if ( event.target != this.inputField && -@@ -3982,8 +4021,8 @@ export class UrlbarInput { +@@ -3982,8 +4022,8 @@ export class UrlbarInput { break; } diff --git a/src/browser/themes/shared/tabbrowser/tabs-css.patch b/src/browser/themes/shared/tabbrowser/tabs-css.patch index 93e6cab24..65ff40457 100644 --- a/src/browser/themes/shared/tabbrowser/tabs-css.patch +++ b/src/browser/themes/shared/tabbrowser/tabs-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css -index 96f930638c04c7ddcc8dc1a7fe4dce8b12a325e6..64487674de1afb711258a36757508cd9b741fcd9 100644 +index 96f930638c04c7ddcc8dc1a7fe4dce8b12a325e6..9e11e715ade485c33ba4c8f719b41002f3008dde 100644 --- a/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css @@ -33,7 +33,7 @@ @@ -64,6 +64,15 @@ index 96f930638c04c7ddcc8dc1a7fe4dce8b12a325e6..64487674de1afb711258a36757508cd9 direction: rtl; mask-image: linear-gradient(to right, transparent, black var(--tab-label-mask-size)); } +@@ -1135,7 +1133,7 @@ + } + } + +-#tabbrowser-arrowscrollbox[orient="vertical"] > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button, ++#tabbrowser-arrowscrollbox[orient="vertical"] #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button, + #vertical-tabs-newtab-button { + appearance: none; + min-height: var(--tab-min-height); @@ -1146,7 +1144,7 @@ margin-inline: var(--tab-inner-inline-margin); @@ -73,6 +82,15 @@ index 96f930638c04c7ddcc8dc1a7fe4dce8b12a325e6..64487674de1afb711258a36757508cd9 } &:hover { +@@ -1170,7 +1168,7 @@ + * flex container. #tabs-newtab-button is a child of the arrowscrollbox where + * we don't want a gap (between tabs), so we have to add some margin. + */ +-#tabbrowser-arrowscrollbox[orient="vertical"] > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button { ++#tabbrowser-arrowscrollbox[orient="vertical"] #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button { + margin-block: var(--tab-block-margin); + } + @@ -1194,7 +1192,6 @@ } diff --git a/src/browser/themes/shared/zen-icons/accessibility.svg b/src/browser/themes/shared/zen-icons/accessibility.svg index 89d9baa0b..c840382d3 100644 --- a/src/browser/themes/shared/zen-icons/accessibility.svg +++ b/src/browser/themes/shared/zen-icons/accessibility.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/add-to-dictionary.svg b/src/browser/themes/shared/zen-icons/add-to-dictionary.svg index 6f6dfdabb..3ee28ba35 100644 --- a/src/browser/themes/shared/zen-icons/add-to-dictionary.svg +++ b/src/browser/themes/shared/zen-icons/add-to-dictionary.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/arrow-down.svg b/src/browser/themes/shared/zen-icons/arrow-down.svg index 1ef89c26f..3fb328224 100644 --- a/src/browser/themes/shared/zen-icons/arrow-down.svg +++ b/src/browser/themes/shared/zen-icons/arrow-down.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/arrow-left.svg b/src/browser/themes/shared/zen-icons/arrow-left.svg index 21c2342a2..f44352b46 100644 --- a/src/browser/themes/shared/zen-icons/arrow-left.svg +++ b/src/browser/themes/shared/zen-icons/arrow-left.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/arrow-right.svg b/src/browser/themes/shared/zen-icons/arrow-right.svg index eaf6fc7c0..cff35212a 100644 --- a/src/browser/themes/shared/zen-icons/arrow-right.svg +++ b/src/browser/themes/shared/zen-icons/arrow-right.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/arrow-up.svg b/src/browser/themes/shared/zen-icons/arrow-up.svg index 7502b1f11..b206a3f9f 100644 --- a/src/browser/themes/shared/zen-icons/arrow-up.svg +++ b/src/browser/themes/shared/zen-icons/arrow-up.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/audio-save.svg b/src/browser/themes/shared/zen-icons/audio-save.svg index a5bc48b88..6b01002fb 100644 --- a/src/browser/themes/shared/zen-icons/audio-save.svg +++ b/src/browser/themes/shared/zen-icons/audio-save.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/autoplay-media-blocked.svg b/src/browser/themes/shared/zen-icons/autoplay-media-blocked.svg index aeb9a98eb..8e2760962 100644 --- a/src/browser/themes/shared/zen-icons/autoplay-media-blocked.svg +++ b/src/browser/themes/shared/zen-icons/autoplay-media-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/autoplay-media.svg b/src/browser/themes/shared/zen-icons/autoplay-media.svg index 20a6a2c81..12ef8fcf0 100644 --- a/src/browser/themes/shared/zen-icons/autoplay-media.svg +++ b/src/browser/themes/shared/zen-icons/autoplay-media.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/back.svg b/src/browser/themes/shared/zen-icons/back.svg index 1678b6024..d2c36f023 100644 --- a/src/browser/themes/shared/zen-icons/back.svg +++ b/src/browser/themes/shared/zen-icons/back.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/bookmark-hollow.svg b/src/browser/themes/shared/zen-icons/bookmark-hollow.svg index 0d1792366..80ee175f8 100644 --- a/src/browser/themes/shared/zen-icons/bookmark-hollow.svg +++ b/src/browser/themes/shared/zen-icons/bookmark-hollow.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/bookmark-star-on-tray.svg b/src/browser/themes/shared/zen-icons/bookmark-star-on-tray.svg index 0d1792366..80ee175f8 100644 --- a/src/browser/themes/shared/zen-icons/bookmark-star-on-tray.svg +++ b/src/browser/themes/shared/zen-icons/bookmark-star-on-tray.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/bookmark.svg b/src/browser/themes/shared/zen-icons/bookmark.svg index d4af6bbbf..c00c201f1 100644 --- a/src/browser/themes/shared/zen-icons/bookmark.svg +++ b/src/browser/themes/shared/zen-icons/bookmark.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/camera-blocked.svg b/src/browser/themes/shared/zen-icons/camera-blocked.svg index 090a80b78..fc7df3492 100644 --- a/src/browser/themes/shared/zen-icons/camera-blocked.svg +++ b/src/browser/themes/shared/zen-icons/camera-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/camera.svg b/src/browser/themes/shared/zen-icons/camera.svg index eb7b8eb93..d8fd7902a 100644 --- a/src/browser/themes/shared/zen-icons/camera.svg +++ b/src/browser/themes/shared/zen-icons/camera.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/canvas.svg b/src/browser/themes/shared/zen-icons/canvas.svg index 56e2403dc..088d715e6 100644 --- a/src/browser/themes/shared/zen-icons/canvas.svg +++ b/src/browser/themes/shared/zen-icons/canvas.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/checkmark.svg b/src/browser/themes/shared/zen-icons/checkmark.svg index 2e009fdf1..b2379ceba 100644 --- a/src/browser/themes/shared/zen-icons/checkmark.svg +++ b/src/browser/themes/shared/zen-icons/checkmark.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/chevron.svg b/src/browser/themes/shared/zen-icons/chevron.svg index c4294002c..43b683ae1 100644 --- a/src/browser/themes/shared/zen-icons/chevron.svg +++ b/src/browser/themes/shared/zen-icons/chevron.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/close-all.svg b/src/browser/themes/shared/zen-icons/close-all.svg index a27866f14..d4c6ae30a 100644 --- a/src/browser/themes/shared/zen-icons/close-all.svg +++ b/src/browser/themes/shared/zen-icons/close-all.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/close.svg b/src/browser/themes/shared/zen-icons/close.svg index 327a6c91f..8560bd1c0 100644 --- a/src/browser/themes/shared/zen-icons/close.svg +++ b/src/browser/themes/shared/zen-icons/close.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/container-tab.svg b/src/browser/themes/shared/zen-icons/container-tab.svg index 5774a0f1d..790c58e00 100644 --- a/src/browser/themes/shared/zen-icons/container-tab.svg +++ b/src/browser/themes/shared/zen-icons/container-tab.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/customize.svg b/src/browser/themes/shared/zen-icons/customize.svg index 6ddec40ff..9b4daa6fa 100644 --- a/src/browser/themes/shared/zen-icons/customize.svg +++ b/src/browser/themes/shared/zen-icons/customize.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/desktop-notification-blocked.svg b/src/browser/themes/shared/zen-icons/desktop-notification-blocked.svg index 4ab923e16..4a9ed8660 100644 --- a/src/browser/themes/shared/zen-icons/desktop-notification-blocked.svg +++ b/src/browser/themes/shared/zen-icons/desktop-notification-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/desktop-notification.svg b/src/browser/themes/shared/zen-icons/desktop-notification.svg index 866964cd8..2647272ed 100644 --- a/src/browser/themes/shared/zen-icons/desktop-notification.svg +++ b/src/browser/themes/shared/zen-icons/desktop-notification.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/developer.svg b/src/browser/themes/shared/zen-icons/developer.svg index b2bcbe3ae..fd575bff4 100644 --- a/src/browser/themes/shared/zen-icons/developer.svg +++ b/src/browser/themes/shared/zen-icons/developer.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/downloads.svg b/src/browser/themes/shared/zen-icons/downloads.svg index 6fc5ab26a..271fe59dc 100644 --- a/src/browser/themes/shared/zen-icons/downloads.svg +++ b/src/browser/themes/shared/zen-icons/downloads.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/drag-indicator.svg b/src/browser/themes/shared/zen-icons/drag-indicator.svg index 97b4bb120..1fbf86104 100644 --- a/src/browser/themes/shared/zen-icons/drag-indicator.svg +++ b/src/browser/themes/shared/zen-icons/drag-indicator.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/duplicate-tab.svg b/src/browser/themes/shared/zen-icons/duplicate-tab.svg index 67e321267..feda9b8ef 100644 --- a/src/browser/themes/shared/zen-icons/duplicate-tab.svg +++ b/src/browser/themes/shared/zen-icons/duplicate-tab.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-copy.svg b/src/browser/themes/shared/zen-icons/edit-copy.svg index 0f4e4f2b5..20f72247b 100644 --- a/src/browser/themes/shared/zen-icons/edit-copy.svg +++ b/src/browser/themes/shared/zen-icons/edit-copy.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-cut.svg b/src/browser/themes/shared/zen-icons/edit-cut.svg index e461be2cd..601fdd3cb 100644 --- a/src/browser/themes/shared/zen-icons/edit-cut.svg +++ b/src/browser/themes/shared/zen-icons/edit-cut.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-delete.svg b/src/browser/themes/shared/zen-icons/edit-delete.svg index 8bcfe2ad7..a0c77b63b 100644 --- a/src/browser/themes/shared/zen-icons/edit-delete.svg +++ b/src/browser/themes/shared/zen-icons/edit-delete.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-paste.svg b/src/browser/themes/shared/zen-icons/edit-paste.svg index ceb616c4a..a2a9e1f6a 100644 --- a/src/browser/themes/shared/zen-icons/edit-paste.svg +++ b/src/browser/themes/shared/zen-icons/edit-paste.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-redo.svg b/src/browser/themes/shared/zen-icons/edit-redo.svg index 39b73abb0..f08e25b4d 100644 --- a/src/browser/themes/shared/zen-icons/edit-redo.svg +++ b/src/browser/themes/shared/zen-icons/edit-redo.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-select-all.svg b/src/browser/themes/shared/zen-icons/edit-select-all.svg index d90d0e5ed..e59c2a0ca 100644 --- a/src/browser/themes/shared/zen-icons/edit-select-all.svg +++ b/src/browser/themes/shared/zen-icons/edit-select-all.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-theme.svg b/src/browser/themes/shared/zen-icons/edit-theme.svg index f1a2a6a9e..97a2d2ade 100644 --- a/src/browser/themes/shared/zen-icons/edit-theme.svg +++ b/src/browser/themes/shared/zen-icons/edit-theme.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit-undo.svg b/src/browser/themes/shared/zen-icons/edit-undo.svg index 4e469ac9f..cf28988dd 100644 --- a/src/browser/themes/shared/zen-icons/edit-undo.svg +++ b/src/browser/themes/shared/zen-icons/edit-undo.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/edit.svg b/src/browser/themes/shared/zen-icons/edit.svg index e5317afc1..052928b6b 100644 --- a/src/browser/themes/shared/zen-icons/edit.svg +++ b/src/browser/themes/shared/zen-icons/edit.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/essential-add.svg b/src/browser/themes/shared/zen-icons/essential-add.svg index f814e9540..622d39314 100644 --- a/src/browser/themes/shared/zen-icons/essential-add.svg +++ b/src/browser/themes/shared/zen-icons/essential-add.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/essential-remove.svg b/src/browser/themes/shared/zen-icons/essential-remove.svg index 69ac1eb92..6675d71a1 100644 --- a/src/browser/themes/shared/zen-icons/essential-remove.svg +++ b/src/browser/themes/shared/zen-icons/essential-remove.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/expand-sidebar.svg b/src/browser/themes/shared/zen-icons/expand-sidebar.svg index a72ec63ba..04da277e5 100644 --- a/src/browser/themes/shared/zen-icons/expand-sidebar.svg +++ b/src/browser/themes/shared/zen-icons/expand-sidebar.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/ext-link.svg b/src/browser/themes/shared/zen-icons/ext-link.svg index 089c65e22..ec5374e08 100644 --- a/src/browser/themes/shared/zen-icons/ext-link.svg +++ b/src/browser/themes/shared/zen-icons/ext-link.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/extension-blocked.svg b/src/browser/themes/shared/zen-icons/extension-blocked.svg index 66278262e..8911071a4 100644 --- a/src/browser/themes/shared/zen-icons/extension-blocked.svg +++ b/src/browser/themes/shared/zen-icons/extension-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/extension.svg b/src/browser/themes/shared/zen-icons/extension.svg index f462ae524..7b5ebe938 100644 --- a/src/browser/themes/shared/zen-icons/extension.svg +++ b/src/browser/themes/shared/zen-icons/extension.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/folder.svg b/src/browser/themes/shared/zen-icons/folder.svg index 410313bfe..6c5fe3631 100644 --- a/src/browser/themes/shared/zen-icons/folder.svg +++ b/src/browser/themes/shared/zen-icons/folder.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/forget.svg b/src/browser/themes/shared/zen-icons/forget.svg index d02a1961a..79f824519 100644 --- a/src/browser/themes/shared/zen-icons/forget.svg +++ b/src/browser/themes/shared/zen-icons/forget.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/forward.svg b/src/browser/themes/shared/zen-icons/forward.svg index da06af2c8..73619dc37 100644 --- a/src/browser/themes/shared/zen-icons/forward.svg +++ b/src/browser/themes/shared/zen-icons/forward.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/fullscreen-exit.svg b/src/browser/themes/shared/zen-icons/fullscreen-exit.svg index eb189574b..43c6448a1 100644 --- a/src/browser/themes/shared/zen-icons/fullscreen-exit.svg +++ b/src/browser/themes/shared/zen-icons/fullscreen-exit.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/fullscreen.svg b/src/browser/themes/shared/zen-icons/fullscreen.svg index 08ec0056e..4d0bb47b7 100644 --- a/src/browser/themes/shared/zen-icons/fullscreen.svg +++ b/src/browser/themes/shared/zen-icons/fullscreen.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/geo-blocked.svg b/src/browser/themes/shared/zen-icons/geo-blocked.svg index 52a9b5377..0f803e128 100644 --- a/src/browser/themes/shared/zen-icons/geo-blocked.svg +++ b/src/browser/themes/shared/zen-icons/geo-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/geo.svg b/src/browser/themes/shared/zen-icons/geo.svg index bf395d4d4..0d0c7444e 100644 --- a/src/browser/themes/shared/zen-icons/geo.svg +++ b/src/browser/themes/shared/zen-icons/geo.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/help.svg b/src/browser/themes/shared/zen-icons/help.svg index 95db53598..e0fa2e29f 100644 --- a/src/browser/themes/shared/zen-icons/help.svg +++ b/src/browser/themes/shared/zen-icons/help.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/history.svg b/src/browser/themes/shared/zen-icons/history.svg index 9d853baef..f89b5b653 100644 --- a/src/browser/themes/shared/zen-icons/history.svg +++ b/src/browser/themes/shared/zen-icons/history.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/home.svg b/src/browser/themes/shared/zen-icons/home.svg index f4a3273d7..962b7b345 100644 --- a/src/browser/themes/shared/zen-icons/home.svg +++ b/src/browser/themes/shared/zen-icons/home.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/image-copy.svg b/src/browser/themes/shared/zen-icons/image-copy.svg index b8df4d044..afa7e00bb 100644 --- a/src/browser/themes/shared/zen-icons/image-copy.svg +++ b/src/browser/themes/shared/zen-icons/image-copy.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/image-open.svg b/src/browser/themes/shared/zen-icons/image-open.svg index 677757e66..15201ba80 100644 --- a/src/browser/themes/shared/zen-icons/image-open.svg +++ b/src/browser/themes/shared/zen-icons/image-open.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/image-save.svg b/src/browser/themes/shared/zen-icons/image-save.svg index 3278cba0d..60372f9a5 100644 --- a/src/browser/themes/shared/zen-icons/image-save.svg +++ b/src/browser/themes/shared/zen-icons/image-save.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/info.svg b/src/browser/themes/shared/zen-icons/info.svg index 9db7c53f9..67e41ad96 100644 --- a/src/browser/themes/shared/zen-icons/info.svg +++ b/src/browser/themes/shared/zen-icons/info.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/inspect.svg b/src/browser/themes/shared/zen-icons/inspect.svg index cdab4a408..0ba2bd2bf 100644 --- a/src/browser/themes/shared/zen-icons/inspect.svg +++ b/src/browser/themes/shared/zen-icons/inspect.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/library.svg b/src/browser/themes/shared/zen-icons/library.svg index b623e3383..00c43ccdf 100644 --- a/src/browser/themes/shared/zen-icons/library.svg +++ b/src/browser/themes/shared/zen-icons/library.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/link.svg b/src/browser/themes/shared/zen-icons/link.svg index 5f1c21e95..24f91be91 100644 --- a/src/browser/themes/shared/zen-icons/link.svg +++ b/src/browser/themes/shared/zen-icons/link.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/manage.svg b/src/browser/themes/shared/zen-icons/manage.svg index 879093489..890b0ab0e 100644 --- a/src/browser/themes/shared/zen-icons/manage.svg +++ b/src/browser/themes/shared/zen-icons/manage.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-loop.svg b/src/browser/themes/shared/zen-icons/media-loop.svg index 347399d89..9b33cee66 100644 --- a/src/browser/themes/shared/zen-icons/media-loop.svg +++ b/src/browser/themes/shared/zen-icons/media-loop.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-mute.svg b/src/browser/themes/shared/zen-icons/media-mute.svg index d97c674da..c7536b3d0 100644 --- a/src/browser/themes/shared/zen-icons/media-mute.svg +++ b/src/browser/themes/shared/zen-icons/media-mute.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-pause.svg b/src/browser/themes/shared/zen-icons/media-pause.svg index f6bdbdafb..0c8282871 100644 --- a/src/browser/themes/shared/zen-icons/media-pause.svg +++ b/src/browser/themes/shared/zen-icons/media-pause.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-pip.svg b/src/browser/themes/shared/zen-icons/media-pip.svg index 4ef02df2b..16952aa99 100644 --- a/src/browser/themes/shared/zen-icons/media-pip.svg +++ b/src/browser/themes/shared/zen-icons/media-pip.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-play.svg b/src/browser/themes/shared/zen-icons/media-play.svg index 7cf4f6039..0cf03d66b 100644 --- a/src/browser/themes/shared/zen-icons/media-play.svg +++ b/src/browser/themes/shared/zen-icons/media-play.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-speed.svg b/src/browser/themes/shared/zen-icons/media-speed.svg index 3cb15775c..8ac325445 100644 --- a/src/browser/themes/shared/zen-icons/media-speed.svg +++ b/src/browser/themes/shared/zen-icons/media-speed.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/media-unmute.svg b/src/browser/themes/shared/zen-icons/media-unmute.svg index dc630d8a5..f21b4c813 100644 --- a/src/browser/themes/shared/zen-icons/media-unmute.svg +++ b/src/browser/themes/shared/zen-icons/media-unmute.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/menu-bar.svg b/src/browser/themes/shared/zen-icons/menu-bar.svg index f843149e2..500b485af 100644 --- a/src/browser/themes/shared/zen-icons/menu-bar.svg +++ b/src/browser/themes/shared/zen-icons/menu-bar.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/menu.svg b/src/browser/themes/shared/zen-icons/menu.svg index dc211f56a..fa8906b3f 100644 --- a/src/browser/themes/shared/zen-icons/menu.svg +++ b/src/browser/themes/shared/zen-icons/menu.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/microphone-blocked.svg b/src/browser/themes/shared/zen-icons/microphone-blocked.svg index e0c5193bc..60801b32a 100644 --- a/src/browser/themes/shared/zen-icons/microphone-blocked.svg +++ b/src/browser/themes/shared/zen-icons/microphone-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/microphone.svg b/src/browser/themes/shared/zen-icons/microphone.svg index 2ff9811d9..abdc0c9e7 100644 --- a/src/browser/themes/shared/zen-icons/microphone.svg +++ b/src/browser/themes/shared/zen-icons/microphone.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/move-tab.svg b/src/browser/themes/shared/zen-icons/move-tab.svg index dbf923668..4857214fb 100644 --- a/src/browser/themes/shared/zen-icons/move-tab.svg +++ b/src/browser/themes/shared/zen-icons/move-tab.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/new-tab-image.svg b/src/browser/themes/shared/zen-icons/new-tab-image.svg index bc40fea49..890f8c681 100644 --- a/src/browser/themes/shared/zen-icons/new-tab-image.svg +++ b/src/browser/themes/shared/zen-icons/new-tab-image.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/open.svg b/src/browser/themes/shared/zen-icons/open.svg index 3e0a34c1e..5e1889c80 100644 --- a/src/browser/themes/shared/zen-icons/open.svg +++ b/src/browser/themes/shared/zen-icons/open.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/page-portrait.svg b/src/browser/themes/shared/zen-icons/page-portrait.svg index 07dab98f5..99a678428 100644 --- a/src/browser/themes/shared/zen-icons/page-portrait.svg +++ b/src/browser/themes/shared/zen-icons/page-portrait.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/passwords.svg b/src/browser/themes/shared/zen-icons/passwords.svg index b87deb0ff..98792083e 100644 --- a/src/browser/themes/shared/zen-icons/passwords.svg +++ b/src/browser/themes/shared/zen-icons/passwords.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/paste-and-go.svg b/src/browser/themes/shared/zen-icons/paste-and-go.svg index 05ac6e8eb..8af067def 100644 --- a/src/browser/themes/shared/zen-icons/paste-and-go.svg +++ b/src/browser/themes/shared/zen-icons/paste-and-go.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/permissions.svg b/src/browser/themes/shared/zen-icons/permissions.svg index bcb43381e..9b9976140 100644 --- a/src/browser/themes/shared/zen-icons/permissions.svg +++ b/src/browser/themes/shared/zen-icons/permissions.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/persistent-storage-blocked.svg b/src/browser/themes/shared/zen-icons/persistent-storage-blocked.svg index 66278262e..8911071a4 100644 --- a/src/browser/themes/shared/zen-icons/persistent-storage-blocked.svg +++ b/src/browser/themes/shared/zen-icons/persistent-storage-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/persistent-storage.svg b/src/browser/themes/shared/zen-icons/persistent-storage.svg index 65d2044b5..97ac121bb 100644 --- a/src/browser/themes/shared/zen-icons/persistent-storage.svg +++ b/src/browser/themes/shared/zen-icons/persistent-storage.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/pin.svg b/src/browser/themes/shared/zen-icons/pin.svg index a30c319c1..734bb8374 100644 --- a/src/browser/themes/shared/zen-icons/pin.svg +++ b/src/browser/themes/shared/zen-icons/pin.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/plus.svg b/src/browser/themes/shared/zen-icons/plus.svg index 6ce916b23..c426dc454 100644 --- a/src/browser/themes/shared/zen-icons/plus.svg +++ b/src/browser/themes/shared/zen-icons/plus.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/popup.svg b/src/browser/themes/shared/zen-icons/popup.svg index 9f7ea80aa..8677da7b8 100644 --- a/src/browser/themes/shared/zen-icons/popup.svg +++ b/src/browser/themes/shared/zen-icons/popup.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/print.svg b/src/browser/themes/shared/zen-icons/print.svg index ee1844f66..390d8d0c5 100644 --- a/src/browser/themes/shared/zen-icons/print.svg +++ b/src/browser/themes/shared/zen-icons/print.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/private-window.svg b/src/browser/themes/shared/zen-icons/private-window.svg index 98d5c73c4..0c7b46a9a 100644 --- a/src/browser/themes/shared/zen-icons/private-window.svg +++ b/src/browser/themes/shared/zen-icons/private-window.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/privateBrowsing.svg b/src/browser/themes/shared/zen-icons/privateBrowsing.svg index 1674d5457..ee96e2860 100644 --- a/src/browser/themes/shared/zen-icons/privateBrowsing.svg +++ b/src/browser/themes/shared/zen-icons/privateBrowsing.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/reader-mode.svg b/src/browser/themes/shared/zen-icons/reader-mode.svg index 8de3ff026..af5500748 100644 --- a/src/browser/themes/shared/zen-icons/reader-mode.svg +++ b/src/browser/themes/shared/zen-icons/reader-mode.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/reload.svg b/src/browser/themes/shared/zen-icons/reload.svg index 3aa735c04..2134474d6 100644 --- a/src/browser/themes/shared/zen-icons/reload.svg +++ b/src/browser/themes/shared/zen-icons/reload.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/report.svg b/src/browser/themes/shared/zen-icons/report.svg index cab37aaec..3125ec5cc 100644 --- a/src/browser/themes/shared/zen-icons/report.svg +++ b/src/browser/themes/shared/zen-icons/report.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/save.svg b/src/browser/themes/shared/zen-icons/save.svg index 4247ec61c..9bac1fb43 100644 --- a/src/browser/themes/shared/zen-icons/save.svg +++ b/src/browser/themes/shared/zen-icons/save.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/screen-blocked.svg b/src/browser/themes/shared/zen-icons/screen-blocked.svg index df45780fb..ffbba714a 100644 --- a/src/browser/themes/shared/zen-icons/screen-blocked.svg +++ b/src/browser/themes/shared/zen-icons/screen-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/screen.svg b/src/browser/themes/shared/zen-icons/screen.svg index 57281387e..585d8ede6 100644 --- a/src/browser/themes/shared/zen-icons/screen.svg +++ b/src/browser/themes/shared/zen-icons/screen.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/screenshot.svg b/src/browser/themes/shared/zen-icons/screenshot.svg index 66b488605..5f4b9619b 100644 --- a/src/browser/themes/shared/zen-icons/screenshot.svg +++ b/src/browser/themes/shared/zen-icons/screenshot.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/search-glass.svg b/src/browser/themes/shared/zen-icons/search-glass.svg index 24d287f2f..0d5faa5ee 100644 --- a/src/browser/themes/shared/zen-icons/search-glass.svg +++ b/src/browser/themes/shared/zen-icons/search-glass.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/search-page.svg b/src/browser/themes/shared/zen-icons/search-page.svg index 1aad4b524..da76ae067 100644 --- a/src/browser/themes/shared/zen-icons/search-page.svg +++ b/src/browser/themes/shared/zen-icons/search-page.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/security-broken.svg b/src/browser/themes/shared/zen-icons/security-broken.svg index cab37aaec..3125ec5cc 100644 --- a/src/browser/themes/shared/zen-icons/security-broken.svg +++ b/src/browser/themes/shared/zen-icons/security-broken.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/security-warning.svg b/src/browser/themes/shared/zen-icons/security-warning.svg index f74987acc..622bec338 100644 --- a/src/browser/themes/shared/zen-icons/security-warning.svg +++ b/src/browser/themes/shared/zen-icons/security-warning.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/security.svg b/src/browser/themes/shared/zen-icons/security.svg index a4d491f0b..8ca41d326 100644 --- a/src/browser/themes/shared/zen-icons/security.svg +++ b/src/browser/themes/shared/zen-icons/security.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/send-to-device.svg b/src/browser/themes/shared/zen-icons/send-to-device.svg index eff5388f8..5045e0362 100644 --- a/src/browser/themes/shared/zen-icons/send-to-device.svg +++ b/src/browser/themes/shared/zen-icons/send-to-device.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/settings.svg b/src/browser/themes/shared/zen-icons/settings.svg index 142f584d2..73a363015 100644 --- a/src/browser/themes/shared/zen-icons/settings.svg +++ b/src/browser/themes/shared/zen-icons/settings.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/share.svg b/src/browser/themes/shared/zen-icons/share.svg index 3b4ec7d20..702da7aab 100644 --- a/src/browser/themes/shared/zen-icons/share.svg +++ b/src/browser/themes/shared/zen-icons/share.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/sidebar.svg b/src/browser/themes/shared/zen-icons/sidebar.svg index b6134d970..754dce15a 100644 --- a/src/browser/themes/shared/zen-icons/sidebar.svg +++ b/src/browser/themes/shared/zen-icons/sidebar.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/sidebars-right.svg b/src/browser/themes/shared/zen-icons/sidebars-right.svg index 4db5521bf..4e7f8eb29 100644 --- a/src/browser/themes/shared/zen-icons/sidebars-right.svg +++ b/src/browser/themes/shared/zen-icons/sidebars-right.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/source-code.svg b/src/browser/themes/shared/zen-icons/source-code.svg index bb08f1398..b37c7d013 100644 --- a/src/browser/themes/shared/zen-icons/source-code.svg +++ b/src/browser/themes/shared/zen-icons/source-code.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/spell-check.svg b/src/browser/themes/shared/zen-icons/spell-check.svg index 455c785fe..0842c6b33 100644 --- a/src/browser/themes/shared/zen-icons/spell-check.svg +++ b/src/browser/themes/shared/zen-icons/spell-check.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/split.svg b/src/browser/themes/shared/zen-icons/split.svg index 3e2337cb8..8aa952db7 100644 --- a/src/browser/themes/shared/zen-icons/split.svg +++ b/src/browser/themes/shared/zen-icons/split.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tab-audio-blocked-small.svg b/src/browser/themes/shared/zen-icons/tab-audio-blocked-small.svg index 9877ff260..b2cf323c6 100644 --- a/src/browser/themes/shared/zen-icons/tab-audio-blocked-small.svg +++ b/src/browser/themes/shared/zen-icons/tab-audio-blocked-small.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tab-audio-muted-small.svg b/src/browser/themes/shared/zen-icons/tab-audio-muted-small.svg index e7701a9c3..71a22dfb3 100644 --- a/src/browser/themes/shared/zen-icons/tab-audio-muted-small.svg +++ b/src/browser/themes/shared/zen-icons/tab-audio-muted-small.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tab-audio-playing-small.svg b/src/browser/themes/shared/zen-icons/tab-audio-playing-small.svg index dc630d8a5..f21b4c813 100644 --- a/src/browser/themes/shared/zen-icons/tab-audio-playing-small.svg +++ b/src/browser/themes/shared/zen-icons/tab-audio-playing-small.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tab.svg b/src/browser/themes/shared/zen-icons/tab.svg index b46663ccc..cbb67eb97 100644 --- a/src/browser/themes/shared/zen-icons/tab.svg +++ b/src/browser/themes/shared/zen-icons/tab.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tool-profiler.svg b/src/browser/themes/shared/zen-icons/tool-profiler.svg index 870d63c02..fd6ae5fc2 100644 --- a/src/browser/themes/shared/zen-icons/tool-profiler.svg +++ b/src/browser/themes/shared/zen-icons/tool-profiler.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/tracking-protection.svg b/src/browser/themes/shared/zen-icons/tracking-protection.svg index e0b5854da..951808edf 100644 --- a/src/browser/themes/shared/zen-icons/tracking-protection.svg +++ b/src/browser/themes/shared/zen-icons/tracking-protection.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/translations.svg b/src/browser/themes/shared/zen-icons/translations.svg index 2e9ee051d..fe519338d 100644 --- a/src/browser/themes/shared/zen-icons/translations.svg +++ b/src/browser/themes/shared/zen-icons/translations.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/unpin.svg b/src/browser/themes/shared/zen-icons/unpin.svg index 063818335..57473d9e0 100644 --- a/src/browser/themes/shared/zen-icons/unpin.svg +++ b/src/browser/themes/shared/zen-icons/unpin.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/video-open.svg b/src/browser/themes/shared/zen-icons/video-open.svg index dce174372..d34336b6b 100644 --- a/src/browser/themes/shared/zen-icons/video-open.svg +++ b/src/browser/themes/shared/zen-icons/video-open.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/video-save.svg b/src/browser/themes/shared/zen-icons/video-save.svg index a9773c398..09ddcaa1f 100644 --- a/src/browser/themes/shared/zen-icons/video-save.svg +++ b/src/browser/themes/shared/zen-icons/video-save.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/window.svg b/src/browser/themes/shared/zen-icons/window.svg index bc40fea49..890f8c681 100644 --- a/src/browser/themes/shared/zen-icons/window.svg +++ b/src/browser/themes/shared/zen-icons/window.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/xr-blocked.svg b/src/browser/themes/shared/zen-icons/xr-blocked.svg index 839642c37..266caf8b0 100644 --- a/src/browser/themes/shared/zen-icons/xr-blocked.svg +++ b/src/browser/themes/shared/zen-icons/xr-blocked.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/xr.svg b/src/browser/themes/shared/zen-icons/xr.svg index 4ec759867..743a3fc36 100644 --- a/src/browser/themes/shared/zen-icons/xr.svg +++ b/src/browser/themes/shared/zen-icons/xr.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/zoom-control.svg b/src/browser/themes/shared/zen-icons/zoom-control.svg index 77505bc5e..91d85daf6 100644 --- a/src/browser/themes/shared/zen-icons/zoom-control.svg +++ b/src/browser/themes/shared/zen-icons/zoom-control.svg @@ -1 +1 @@ - + diff --git a/src/browser/themes/shared/zen-icons/zoom-out.svg b/src/browser/themes/shared/zen-icons/zoom-out.svg index 063818335..57473d9e0 100644 --- a/src/browser/themes/shared/zen-icons/zoom-out.svg +++ b/src/browser/themes/shared/zen-icons/zoom-out.svg @@ -1 +1 @@ - +