From 14da8cd9e75303a8ab741ffe55e1ba69d07c4a6f Mon Sep 17 00:00:00 2001 From: Mauro Balades Date: Sun, 4 Aug 2024 13:02:25 +0200 Subject: [PATCH] chore: Update sidebar close-on-blur preference handling --- src/browser/app/profile/zen-browser.js | 2 +- src/browser/base/content/ZenSidebarManager.mjs | 17 ++++++++++++----- .../base/content/zen-sidebar-panel.inc.xhtml | 2 +- .../components/preferences/zen-settings.js | 5 +++++ .../preferences/zenLooksAndFeel.inc.xhtml | 5 +++++ .../browser/preferences/zen-preferences.ftl | 2 ++ 6 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index b52c4f155..3950b6ff2 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -77,7 +77,7 @@ pref('zen.view.sidebar-expanded.max-width', 400); // Zen Sidebar pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}"); pref('zen.sidebar.enabled', true); -pref('zen.sidebar.floating', true); +pref('zen.sidebar.close-on-blur', true); // Zen Split View pref('zen.splitView.working', false); diff --git a/src/browser/base/content/ZenSidebarManager.mjs b/src/browser/base/content/ZenSidebarManager.mjs index 93827b4c2..b7b3a3171 100644 --- a/src/browser/base/content/ZenSidebarManager.mjs +++ b/src/browser/base/content/ZenSidebarManager.mjs @@ -31,10 +31,13 @@ var gZenBrowserManagerSidebar = { return JSON.parse(services); }, + get shouldCloseOnBlur() { + return Services.prefs.getBoolPref("zen.sidebar.close-on-blur"); + }, + listenForPrefChanges() { Services.prefs.addObserver("zen.sidebar.data", this.handleEvent.bind(this)); Services.prefs.addObserver("zen.sidebar.enabled", this.handleEvent.bind(this)); - Services.prefs.addObserver("zen.sidebar.floating", this.handleEvent.bind(this)); let sidebar = document.getElementById("zen-sidebar-web-panel"); this.splitterElement.addEventListener("mousedown", (function(event) { @@ -102,6 +105,10 @@ var gZenBrowserManagerSidebar = { this.handleEvent(); }, + get isFloating() { + return document.getElementById("zen-sidebar-web-panel").hasAttribute("pinned"); + }, + handleEvent() { this._hasChangedConfig = true; this.update(); @@ -109,10 +116,11 @@ var gZenBrowserManagerSidebar = { // https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind var clickOutsideHandler = this._handleClickOutside.bind(this); - if (Services.prefs.getBoolPref("zen.sidebar.floating") && !this._hasRegisteredPinnedClickOutside) { + let isFloating = this.isFloating; + if (isFloating && !this._hasRegisteredPinnedClickOutside) { document.addEventListener("mouseup", clickOutsideHandler); this._hasRegisteredPinnedClickOutside = true; - } else if (!Services.prefs.getBoolPref("zen.sidebar.floating") && this._hasRegisteredPinnedClickOutside) { + } else if (!isFloating && this._hasRegisteredPinnedClickOutside) { document.removeEventListener("mouseup", clickOutsideHandler); this._hasRegisteredPinnedClickOutside = false; } @@ -129,7 +137,7 @@ var gZenBrowserManagerSidebar = { _handleClickOutside(event) { let sidebar = document.getElementById("zen-sidebar-web-panel"); - if (!sidebar.hasAttribute("pinned") || !this._currentPanel || this._isDragging) { + if (!sidebar.hasAttribute("pinned") || this._isDragging || !this.shouldCloseOnBlur) { return; } let target = event.target; @@ -420,7 +428,6 @@ var gZenBrowserManagerSidebar = { } else { this._setPinnedToElements(); } - Services.prefs.setBoolPref("zen.sidebar.floating", sidebar.hasAttribute("pinned")); this.update(); }, diff --git a/src/browser/base/content/zen-sidebar-panel.inc.xhtml b/src/browser/base/content/zen-sidebar-panel.inc.xhtml index 1e718452b..46f78d69f 100644 --- a/src/browser/base/content/zen-sidebar-panel.inc.xhtml +++ b/src/browser/base/content/zen-sidebar-panel.inc.xhtml @@ -1,5 +1,5 @@ -