Merge pull request #26 from BrhmDev/fix/update-compact-mode-context-menu-when-updated-from-elsewhere

Always update compact mode context menu on preference update.
This commit is contained in:
mauro 🤙 2024-09-23 18:02:25 +02:00 committed by GitHub
commit e641ec8ce5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -48,60 +48,34 @@ var gZenCompactModeManager = {
}, },
addContextMenu() { 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(` const fragment = window.MozXULElement.parseXULToFragment(`
<menu id="zen-context-menu-compact-mode" data-l10n-id="zen-toolbar-context-compact-mode"> <menu id="zen-context-menu-compact-mode" data-l10n-id="zen-toolbar-context-compact-mode">
<menupopup> <menupopup>
<menuitem checked="${compactModeActive}" id="zen-context-menu-compact-mode-toggle" data-l10n-id="zen-toolbar-context-compact-mode-enable" type="checkbox" oncommand="gZenCompactModeManager.contextMenuToggle();"/> <menuitem id="zen-context-menu-compact-mode-toggle" data-l10n-id="zen-toolbar-context-compact-mode-enable" type="checkbox" oncommand="gZenCompactModeManager.toggle();"/>
<menuseparator/> <menuseparator/>
<menuitem checked="${!compactModeBoth && compactModeSidebar}" id="zen-context-menu-compact-mode-hide-sidebar" data-l10n-id="zen-toolbar-context-compact-mode-just-tabs" type="radio" oncommand="gZenCompactModeManager.contextMenuHideSidebar();"/> <menuitem id="zen-context-menu-compact-mode-hide-sidebar" data-l10n-id="zen-toolbar-context-compact-mode-just-tabs" type="radio" oncommand="gZenCompactModeManager.hideSidebar();"/>
<menuitem checked="${!compactModeBoth && compactModeToolbar}" id="zen-context-menu-compact-mode-hide-toolbar" data-l10n-id="zen-toolbar-context-compact-mode-just-toolbar" type="radio" oncommand="gZenCompactModeManager.contextMenuHideToolbar();"/> <menuitem id="zen-context-menu-compact-mode-hide-toolbar" data-l10n-id="zen-toolbar-context-compact-mode-just-toolbar" type="radio" oncommand="gZenCompactModeManager.hideToolbar();"/>
<menuitem checked="${compactModeBoth}" id="zen-context-menu-compact-mode-hide-both" data-l10n-id="zen-toolbar-context-compact-mode-hide-both" type="radio" oncommand="gZenCompactModeManager.contextMenuHideBoth();"/> <menuitem id="zen-context-menu-compact-mode-hide-both" data-l10n-id="zen-toolbar-context-compact-mode-hide-both" type="radio" oncommand="gZenCompactModeManager.hideBoth();"/>
</menupopup> </menupopup>
</menu> </menu>
`); `);
document.getElementById('viewToolbarsMenuSeparator').before(fragment); document.getElementById('viewToolbarsMenuSeparator').before(fragment);
this.updateContextMenu();
}, },
contextMenuToggle() { hideSidebar() {
document.getElementById('zen-context-menu-compact-mode-toggle')
.setAttribute('checked', this.toggle());
},
contextMenuHideSidebar() {
Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', true); Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', true);
Services.prefs.setBoolPref('zen.view.compact.hide-toolbar', false); 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-toolbar', true);
Services.prefs.setBoolPref('zen.view.compact.hide-tabbar', false); 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-tabbar', true);
Services.prefs.setBoolPref('zen.view.compact.hide-toolbar', 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) { addEventListener(callback) {
@ -111,6 +85,21 @@ var gZenCompactModeManager = {
_updateEvent() { _updateEvent() {
this._evenListeners.forEach((callback) => callback()); this._evenListeners.forEach((callback) => callback());
this._disableTabsOnHoverIfConflict(); 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() { _disableTabsOnHoverIfConflict() {