diff --git a/prefs/compact-mode.yaml b/prefs/compact-mode.yaml index 2470ffcd68..d39eea82c0 100644 --- a/prefs/compact-mode.yaml +++ b/prefs/compact-mode.yaml @@ -32,6 +32,9 @@ - name: zen.view.compact.show-background-tab-toast value: true +- name: zen.view.compact.enable-on-fullscreen + value: true + # Do not edit manually - name: zen.view.compact.should-enable-at-startup hidden: true diff --git a/src/zen/compact-mode/ZenCompactMode.mjs b/src/zen/compact-mode/ZenCompactMode.mjs index 87d48e0154..7c255f0e48 100644 --- a/src/zen/compact-mode/ZenCompactMode.mjs +++ b/src/zen/compact-mode/ZenCompactMode.mjs @@ -57,10 +57,18 @@ var gZenCompactModeManager = { const tabIsRightObserver = this._updateSidebarIsOnRight.bind(this); Services.prefs.addObserver('zen.tabs.vertical.right-side', tabIsRightObserver); + const enableOnFullscreenObserver = this._updateEnableOnFullscreen.bind(this); + Services.prefs.addObserver('zen.view.compact.enable-on-fullscreen', enableOnFullscreenObserver); + window.addEventListener('sizemodechange', this.enableOnFullscreen.bind(this)); + window.addEventListener( 'unload', () => { Services.prefs.removeObserver('zen.tabs.vertical.right-side', tabIsRightObserver); + Services.prefs.removeObserver( + 'zen.view.compact.enable-on-fullscreen', + enableOnFullscreenObserver + ); }, { once: true } ); @@ -95,11 +103,19 @@ var gZenCompactModeManager = { }); }, + get fullscreen() { + return window.windowState === window.STATE_FULLSCREEN; + }, + get preference() { return lazyCompactMode.mainAppWrapper.getAttribute('zen-compact-mode') === 'true'; }, get shouldBeCompact() { + if (this._enableOnFullscreen && this.fullscreen) { + return true; + } + return !document.documentElement.getAttribute('chromehidden').includes('toolbar'); }, @@ -142,6 +158,19 @@ var gZenCompactModeManager = { return gNavToolbox; }, + enableOnFullscreen() { + if (!this._enableOnFullscreen) { + return; + } + + if (this.fullscreen) { + this._oldPreference = this.preference; + this.preference = true; + } else { + this.preference = this._oldPreference; + } + }, + addHasPolyfillObserver() { this.sidebarObserverId = ZenHasPolyfill.observeSelectorExistence( this.sidebar, @@ -450,6 +479,10 @@ var gZenCompactModeManager = { this._sidebarIsOnRight = Services.prefs.getBoolPref('zen.tabs.vertical.right-side'); }, + _updateEnableOnFullscreen() { + this._enableOnFullscreen = Services.prefs.getBoolPref('zen.view.compact.enable-on-fullscreen'); + }, + toggleSidebar() { this.sidebar.toggleAttribute('zen-user-show'); },