diff --git a/src/browser/base/content/ZenUIManager.mjs b/src/browser/base/content/ZenUIManager.mjs index e29158eb6..b5d4b683b 100644 --- a/src/browser/base/content/ZenUIManager.mjs +++ b/src/browser/base/content/ZenUIManager.mjs @@ -123,17 +123,16 @@ var gZenVerticalTabsManager = { }); var updateEvent = this._updateEvent.bind(this); - Services.prefs.addObserver('zen.tabs.vertical', updateEvent); - Services.prefs.addObserver('zen.tabs.vertical.right-side', updateEvent); - Services.prefs.addObserver('zen.view.sidebar-expanded.max-width', updateEvent); - Services.prefs.addObserver('zen.view.use-single-toolbar', updateEvent); - Services.prefs.addObserver('zen.view.sidebar-expanded', updateEvent); + this.initializePreferences(updateEvent); this._toolbarOriginalParent = document.getElementById('nav-bar').parentElement; gZenCompactModeManager.addEventListener(updateEvent); this.initRightSideOrderContextMenu(); + window.addEventListener('customizationstarting', this._preCustomize.bind(this)); + window.addEventListener('aftercustomization', updateEvent); + window.addEventListener('DOMContentLoaded', updateEvent, { once: true }); const tabs = document.getElementById('tabbrowser-tabs'); @@ -196,12 +195,64 @@ var gZenVerticalTabsManager = { get actualWindowButtons() { // we have multiple ".titlebar-buttonbox-container" in the DOM, because of the titlebar if (!this.__actualWindowButtons) { - this.__actualWindowButtons = document.querySelector('#nav-bar .titlebar-buttonbox-container'); + this.__actualWindowButtons = AppConstants.platform === 'macosx' ? + document.querySelector('.titlebar-buttonbox-container') : // TODO: test if it works 100% of the time + document.querySelector('#nav-bar .titlebar-buttonbox-container'); } return this.__actualWindowButtons; }, - _updateEvent() { + _preCustomize() { + this._updateEvent({ forceMultipleToolbar: true }); + }, + + initializePreferences(updateEvent) { + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsCompactMode", + "zen.view.compact", + false + // no need to update the event, it's handled by the compact mode manager + ); + + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsVerticalTabs", + "zen.tabs.vertical", + true, + updateEvent + ); + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsRightSide", + "zen.tabs.vertical.right-side", + false, + updateEvent + ); + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsUseSingleToolbar", + "zen.view.use-single-toolbar", + false, + updateEvent + ); + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsSidebarExpanded", + "zen.view.sidebar-expanded", + false, + updateEvent + ); + XPCOMUtils.defineLazyPreferenceGetter( + this, + "_prefsSidebarExpandedMaxWidth", + "zen.view.sidebar-expanded.max-width", + 300, + updateEvent + ); + }, + + _updateEvent({ forceMultipleToolbar = false } = {}) { if (this._isUpdating) { return; } @@ -209,14 +260,14 @@ var gZenVerticalTabsManager = { try { this._updateMaxWidth(); const topButtons = document.getElementById('zen-sidebar-top-buttons'); - const isCompactMode = Services.prefs.getBoolPref('zen.view.compact'); - const isVerticalTabs = Services.prefs.getBoolPref('zen.tabs.vertical'); - const isSidebarExpanded = Services.prefs.getBoolPref('zen.view.sidebar-expanded') || !isVerticalTabs; - const isRightSide = Services.prefs.getBoolPref('zen.tabs.vertical.right-side') && isVerticalTabs; - const isSingleToolbar = (Services.prefs.getBoolPref('zen.view.use-single-toolbar') && (isVerticalTabs && isSidebarExpanded) )|| !isVerticalTabs; + const isCompactMode = this._prefsCompactMode; + const isVerticalTabs = this._prefsVerticalTabs || forceMultipleToolbar; + const isSidebarExpanded = this._prefsSidebarExpanded || !isVerticalTabs; + const isRightSide = this._prefsRightSide && isVerticalTabs; + const isSingleToolbar = ((this._prefsUseSingleToolbar && (isVerticalTabs && isSidebarExpanded) )|| !isVerticalTabs) && !forceMultipleToolbar; const titlebar = document.getElementById('titlebar'); - gBrowser.tabContainer.setAttribute('orient', isVerticalTabs ? 'vertical' : 'vertical'); + gBrowser.tabContainer.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); gBrowser.tabContainer.arrowScrollbox.setAttribute('orient', isVerticalTabs ? 'vertical' : 'horizontal'); const buttonsTarget = document.getElementById('zen-sidebar-top-buttons-customization-target'); @@ -347,10 +398,9 @@ var gZenVerticalTabsManager = { }, _updateMaxWidth() { - const isCompactMode = Services.prefs.getBoolPref('zen.view.compact'); const maxWidth = Services.prefs.getIntPref('zen.view.sidebar-expanded.max-width'); const toolbox = document.getElementById('navigator-toolbox'); - if (!isCompactMode) { + if (!this._prefsCompactMode) { toolbox.style.maxWidth = `${maxWidth}px`; } else { toolbox.style.removeProperty('maxWidth'); diff --git a/src/browser/base/content/zen-popupset.inc.xhtml b/src/browser/base/content/zen-popupset.inc.xhtml index e15076159..9a3926cb3 100644 --- a/src/browser/base/content/zen-popupset.inc.xhtml +++ b/src/browser/base/content/zen-popupset.inc.xhtml @@ -146,9 +146,6 @@

- - - diff --git a/src/browser/base/content/zen-styles/zen-compact-mode.css b/src/browser/base/content/zen-styles/zen-compact-mode.css index 88270cd52..8aebef5c6 100644 --- a/src/browser/base/content/zen-styles/zen-compact-mode.css +++ b/src/browser/base/content/zen-styles/zen-compact-mode.css @@ -24,7 +24,7 @@ --zen-compact-float: calc(var(--zen-element-separation) - 1px); position: absolute; z-index: 10; - transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out; + transition: transform 0.25s ease-in-out, opacity 0.1s ease-in-out; right: calc(100% - var(--zen-element-separation)); top: 0; bottom: var(--zen-element-separation); 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 59eb39b8b..41831c827 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 @@ -234,7 +234,7 @@ & .tabbrowser-tab { animation: none; - transition: none; + transition: scale 0.1s ease-in-out; &[fadein='true']:not([zen-essential='true']) { #tabbrowser-tabs[zen-workspace-animation='previous'] & { animation: zen-slide-in-reverse 0.2s ease-in-out; @@ -245,6 +245,10 @@ } } + &:not([zen-essential='true']):active { + scale: 0.98; + } + max-width: unset; padding: 0 !important; diff --git a/src/browser/base/content/zen-styles/zen-theme.css b/src/browser/base/content/zen-styles/zen-theme.css index c38439a14..91a1a6f49 100644 --- a/src/browser/base/content/zen-styles/zen-theme.css +++ b/src/browser/base/content/zen-styles/zen-theme.css @@ -127,6 +127,7 @@ --zen-themed-toolbar-bg-transparent: light-dark(var(--zen-branding-bg), var(--zen-colors-tertiary)); @media (-moz-windows-mica) or (-moz-platform: macos) { + background: transparent; --zen-themed-toolbar-bg-transparency: 0.05; --zen-themed-toolbar-bg-transparent: light-dark(rgba(255, 255, 255, var(--zen-themed-toolbar-bg-transparency)), rgba(0, 0, 0, var(--zen-themed-toolbar-bg-transparency))); } diff --git a/src/browser/base/content/zen-styles/zen-urlbar.css b/src/browser/base/content/zen-styles/zen-urlbar.css index 411fe5788..3fb2f223a 100644 --- a/src/browser/base/content/zen-styles/zen-urlbar.css +++ b/src/browser/base/content/zen-styles/zen-urlbar.css @@ -90,7 +90,11 @@ #urlbar-background { border: transparent !important; margin: 1px; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1) !important; + :root[zen-single-toolbar='true'] & { + box-shadow: none !important; + } } #urlbar[focused='true']:not([suppress-focus-border]) > #urlbar-background, diff --git a/src/browser/base/content/zen-styles/zen-workspaces.css b/src/browser/base/content/zen-styles/zen-workspaces.css index 3db584ff0..5ce0cbb6e 100644 --- a/src/browser/base/content/zen-styles/zen-workspaces.css +++ b/src/browser/base/content/zen-styles/zen-workspaces.css @@ -424,8 +424,12 @@ } } -@media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') or (not (-moz-bool-pref: 'zen.workspaces.enabled')) { +@media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') { #zen-current-workspace-indicator { display: none !important; } } + +#zen-current-workspace-indicator[hidden='true'] { + display: none !important; +} diff --git a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch index 20d6ec8f1..8bf014d1e 100644 --- a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch +++ b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs -index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7bc9a0477 100644 +index 45d0e0e4872eeabf87862dbadfee1dc211ed7bed..5a0825ff92c115bf30046a01cff17f189005d5ef 100644 --- a/browser/components/customizableui/CustomizableUI.sys.mjs +++ b/browser/components/customizableui/CustomizableUI.sys.mjs @@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -19,7 +19,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 const kSpecialWidgetPfx = "customizableui-special-"; -@@ -323,13 +324,14 @@ var CustomizableUIInternal = { +@@ -307,13 +308,14 @@ var CustomizableUIInternal = { "spring", "urlbar-container", "spring", @@ -37,7 +37,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 this.registerArea( CustomizableUI.AREA_NAVBAR, { -@@ -338,7 +340,7 @@ var CustomizableUIInternal = { +@@ -322,7 +324,7 @@ var CustomizableUIInternal = { defaultPlacements: navbarPlacements, verticalTabsDefaultPlacements: [ "firefox-view-button", @@ -46,7 +46,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 "alltabs-button", ], defaultCollapsed: false, -@@ -363,10 +365,10 @@ var CustomizableUIInternal = { +@@ -347,10 +349,10 @@ var CustomizableUIInternal = { { type: CustomizableUI.TYPE_TOOLBAR, defaultPlacements: [ @@ -60,7 +60,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 ], verticalTabsDefaultPlacements: [], defaultCollapsed: null, -@@ -429,6 +431,7 @@ var CustomizableUIInternal = { +@@ -413,6 +415,7 @@ var CustomizableUIInternal = { CustomizableUI.AREA_NAVBAR, CustomizableUI.AREA_BOOKMARKS, CustomizableUI.AREA_TABSTRIP, @@ -68,7 +68,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 ]); if (AppConstants.platform != "macosx") { toolbars.add(CustomizableUI.AREA_MENUBAR); -@@ -1144,6 +1147,9 @@ var CustomizableUIInternal = { +@@ -1128,6 +1131,9 @@ var CustomizableUIInternal = { placements = gPlacements.get(area); } @@ -78,15 +78,7 @@ index 989e69245aeb1185125752db6b9c58e462d554e4..3eef114cc711505c647e21e35a063fb7 // For toolbars that need it, mark as dirty. let defaultPlacements = areaProperties.get("defaultPlacements"); if ( -@@ -3603,6 +3609,7 @@ var CustomizableUIInternal = { - if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { - let defaultCollapsed = area.get("defaultCollapsed"); - let win = areaNode.ownerGlobal; -+ win.gZenVerticalTabsManager._updateEvent(); - if (defaultCollapsed !== null) { - win.setToolbarVisibility( - areaNode, -@@ -4558,6 +4565,7 @@ export var CustomizableUI = { +@@ -4572,6 +4578,7 @@ export var CustomizableUI = { unregisterArea(aName, aDestroyPlacements) { CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); }, diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js index 503d01ed6..862a2ccc0 100644 --- a/src/browser/components/preferences/zen-settings.js +++ b/src/browser/components/preferences/zen-settings.js @@ -641,12 +641,10 @@ var gZenWorkspacesSettings = { }, async onWorkspaceChange(checked) { - if (checked) { - let buttonIndex = await confirmRestartPrompt(true, 1, true, false); - if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) { - Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart); - return; - } + let buttonIndex = await confirmRestartPrompt(true, 1, true, false); + if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) { + Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart); + return; } }, }; diff --git a/src/modules/libpref/init/StaticPrefList-yaml.patch b/src/modules/libpref/init/StaticPrefList-yaml.patch new file mode 100644 index 000000000..02629e3b3 --- /dev/null +++ b/src/modules/libpref/init/StaticPrefList-yaml.patch @@ -0,0 +1,13 @@ +diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml +index c63a259a51c4862bc8f73eabdc5730bfe2f28da4..f9b8431071e73ce55972c12354ed44bc3a4df9c0 100644 +--- a/modules/libpref/init/StaticPrefList.yaml ++++ b/modules/libpref/init/StaticPrefList.yaml +@@ -17651,7 +17651,7 @@ + # Whether we use the mica backdrop. Off by default for now. + - name: widget.windows.mica + type: bool +- value: false ++ value: true + mirror: once + #endif +