From 3cc1a4b4b0c800a0cacc0fe004d8a2d400f4a8d3 Mon Sep 17 00:00:00 2001 From: brahim <92426196+BrhmDev@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:23:27 +0200 Subject: [PATCH 1/3] Always update compact mode context menu on preference update. --- src/ZenCompactMode.mjs | 57 +++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/ZenCompactMode.mjs b/src/ZenCompactMode.mjs index 17d628f..6cf8ee8 100644 --- a/src/ZenCompactMode.mjs +++ b/src/ZenCompactMode.mjs @@ -48,60 +48,34 @@ var gZenCompactModeManager = { }, addContextMenu() { - const compactModeActive = Services.prefs.getBoolPref('zen.view.compact'); - const compactModeSidebar = Services.prefs.getBoolPref('zen.view.compact.hide-tabbar'); - const compactModeToolbar = Services.prefs.getBoolPref('zen.view.compact.hide-toolbar'); - const compactModeBoth = compactModeSidebar && compactModeToolbar; const fragment = window.MozXULElement.parseXULToFragment(`
`); document.getElementById('viewToolbarsMenuSeparator').before(fragment); + this.updateContextMenu(); }, - contextMenuToggle() { - document.getElementById('zen-context-menu-compact-mode-toggle') - .setAttribute('checked', this.toggle()); - }, - - contextMenuHideSidebar() { + hideSidebar() { Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', true); Services.prefs.setBoolPref('zen.view.compact.hide-toolbar', false); - document.getElementById('zen-context-menu-compact-mode-hide-sidebar') - .setAttribute('checked', true); - document.getElementById('zen-context-menu-compact-mode-hide-toolbar') - .setAttribute('checked', false); - document.getElementById('zen-context-menu-compact-mode-hide-both') - .setAttribute('checked', false); }, - contextMenuHideToolbar() { + hideToolbar() { Services.prefs.setBoolPref('zen.view.compact.hide-toolbar', true); Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', false); - document.getElementById('zen-context-menu-compact-mode-hide-sidebar') - .setAttribute('checked', false); - document.getElementById('zen-context-menu-compact-mode-hide-toolbar') - .setAttribute('checked', true); - document.getElementById('zen-context-menu-compact-mode-hide-both') - .setAttribute('checked', false); }, - contextMenuHideBoth() { + hideBoth() { Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', true); Services.prefs.setBoolPref('zen.view.compact.hide-toolbar', true); - document.getElementById('zen-context-menu-compact-mode-hide-sidebar') - .setAttribute('checked', false); - document.getElementById('zen-context-menu-compact-mode-hide-toolbar') - .setAttribute('checked', false); - document.getElementById('zen-context-menu-compact-mode-hide-both') - .setAttribute('checked', true); }, addEventListener(callback) { @@ -111,6 +85,21 @@ var gZenCompactModeManager = { _updateEvent() { this._evenListeners.forEach((callback) => callback()); this._disableTabsOnHoverIfConflict(); + this.updateContextMenu(); + }, + + updateContextMenu() { + document.getElementById('zen-context-menu-compact-mode-toggle') + .setAttribute('checked', Services.prefs.getBoolPref('zen.view.compact')); + + const hideTabBar = Services.prefs.getBoolPref('zen.view.compact.hide-tabbar'); + const hideToolbar = Services.prefs.getBoolPref('zen.view.compact.hide-toolbar'); + const hideBoth = hideTabBar && hideToolbar; + + const idName = 'zen-context-menu-compact-mode-hide-'; + document.getElementById(idName + 'sidebar').setAttribute('checked', !hideBoth && hideTabBar); + document.getElementById(idName + 'toolbar').setAttribute('checked', !hideBoth && hideToolbar); + document.getElementById(idName + 'both').setAttribute('checked', hideBoth); }, _disableTabsOnHoverIfConflict() { From 9ac29437d84e08e6db6055c8f51abe389ef9f38e Mon Sep 17 00:00:00 2001 From: brahim <92426196+BrhmDev@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:15:09 +0200 Subject: [PATCH 2/3] Fix rightside sidebar not always staying open when overshooting mouse. --- src/ZenCompactMode.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ZenCompactMode.mjs b/src/ZenCompactMode.mjs index 17d628f..8284d6f 100644 --- a/src/ZenCompactMode.mjs +++ b/src/ZenCompactMode.mjs @@ -219,9 +219,9 @@ var gZenCompactModeManager = { }, _getCrossedEdge(posX, posY, element = document.documentElement, maxDistance = 10) { - posX = Math.max(0, posX); - posY = Math.max(0, posY); const targetBox = element.getBoundingClientRect(); + posX = Math.max(0, Math.min(posX, targetBox["right"])); + posY = Math.max(0, Math.min(posY, targetBox["bottom"])); return ["top", "bottom", "left", "right"].find((edge, i) => { const distance = Math.abs((i < 2 ? posY : posX) - targetBox[edge]); return distance <= maxDistance; From 3cb4bb194f26755bc31a4d6a03db2f5b1b8071aa Mon Sep 17 00:00:00 2001 From: brahim <92426196+BrhmDev@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:38:53 +0200 Subject: [PATCH 3/3] Make gZenCompactModeManager._getCrossedEdge work with any element. --- src/ZenCompactMode.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ZenCompactMode.mjs b/src/ZenCompactMode.mjs index 8284d6f..546013e 100644 --- a/src/ZenCompactMode.mjs +++ b/src/ZenCompactMode.mjs @@ -220,8 +220,8 @@ var gZenCompactModeManager = { _getCrossedEdge(posX, posY, element = document.documentElement, maxDistance = 10) { const targetBox = element.getBoundingClientRect(); - posX = Math.max(0, Math.min(posX, targetBox["right"])); - posY = Math.max(0, Math.min(posY, targetBox["bottom"])); + posX = Math.max(targetBox.left, Math.min(posX, targetBox.right)); + posY = Math.max(targetBox.top, Math.min(posY, targetBox.bottom)); return ["top", "bottom", "left", "right"].find((edge, i) => { const distance = Math.abs((i < 2 ? posY : posX) - targetBox[edge]); return distance <= maxDistance;