chore: Update sidebar close-on-blur preference handling

This commit is contained in:
Mauro Balades
2024-08-04 13:02:25 +02:00
parent 741cfd7af4
commit 14da8cd9e7
6 changed files with 26 additions and 7 deletions

View File

@@ -77,7 +77,7 @@ pref('zen.view.sidebar-expanded.max-width', 400);
// Zen Sidebar // 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.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.enabled', true);
pref('zen.sidebar.floating', true); pref('zen.sidebar.close-on-blur', true);
// Zen Split View // Zen Split View
pref('zen.splitView.working', false); pref('zen.splitView.working', false);

View File

@@ -31,10 +31,13 @@ var gZenBrowserManagerSidebar = {
return JSON.parse(services); return JSON.parse(services);
}, },
get shouldCloseOnBlur() {
return Services.prefs.getBoolPref("zen.sidebar.close-on-blur");
},
listenForPrefChanges() { listenForPrefChanges() {
Services.prefs.addObserver("zen.sidebar.data", this.handleEvent.bind(this)); 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.enabled", this.handleEvent.bind(this));
Services.prefs.addObserver("zen.sidebar.floating", this.handleEvent.bind(this));
let sidebar = document.getElementById("zen-sidebar-web-panel"); let sidebar = document.getElementById("zen-sidebar-web-panel");
this.splitterElement.addEventListener("mousedown", (function(event) { this.splitterElement.addEventListener("mousedown", (function(event) {
@@ -102,6 +105,10 @@ var gZenBrowserManagerSidebar = {
this.handleEvent(); this.handleEvent();
}, },
get isFloating() {
return document.getElementById("zen-sidebar-web-panel").hasAttribute("pinned");
},
handleEvent() { handleEvent() {
this._hasChangedConfig = true; this._hasChangedConfig = true;
this.update(); this.update();
@@ -109,10 +116,11 @@ var gZenBrowserManagerSidebar = {
// https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind // https://stackoverflow.com/questions/11565471/removing-event-listener-which-was-added-with-bind
var clickOutsideHandler = this._handleClickOutside.bind(this); 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); document.addEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = true; this._hasRegisteredPinnedClickOutside = true;
} else if (!Services.prefs.getBoolPref("zen.sidebar.floating") && this._hasRegisteredPinnedClickOutside) { } else if (!isFloating && this._hasRegisteredPinnedClickOutside) {
document.removeEventListener("mouseup", clickOutsideHandler); document.removeEventListener("mouseup", clickOutsideHandler);
this._hasRegisteredPinnedClickOutside = false; this._hasRegisteredPinnedClickOutside = false;
} }
@@ -129,7 +137,7 @@ var gZenBrowserManagerSidebar = {
_handleClickOutside(event) { _handleClickOutside(event) {
let sidebar = document.getElementById("zen-sidebar-web-panel"); 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; return;
} }
let target = event.target; let target = event.target;
@@ -420,7 +428,6 @@ var gZenBrowserManagerSidebar = {
} else { } else {
this._setPinnedToElements(); this._setPinnedToElements();
} }
Services.prefs.setBoolPref("zen.sidebar.floating", sidebar.hasAttribute("pinned"));
this.update(); this.update();
}, },

View File

@@ -1,5 +1,5 @@
<box id="zen-sidebar-web-panel-wrapper"> <box id="zen-sidebar-web-panel-wrapper">
<box id="zen-sidebar-web-panel" class="chromeclass-extrachrome" hidden="true"> <box id="zen-sidebar-web-panel" class="chromeclass-extrachrome" hidden="true" persist="pinned style hidden">
<toolbar mode="icons" flex="1" id="zen-sidebar-web-header"> <toolbar mode="icons" flex="1" id="zen-sidebar-web-header">
<hbox> <hbox>
<toolbarbutton id="zen-sidebar-web-panel-back" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.back();"/> <toolbarbutton id="zen-sidebar-web-panel-back" class="toolbarbutton-1 chromeclass-toolbar-additional" oncommand="gZenBrowserManagerSidebar.back();"/>

View File

@@ -64,6 +64,11 @@ Preferences.addAll([
type: "bool", type: "bool",
default: true, default: true,
}, },
{
id: "zen.sidebar.close-on-blur",
type: "bool",
default: true,
},
{ {
id: "zen.view.compact", id: "zen.view.compact",
type: "bool", type: "bool",

View File

@@ -45,6 +45,11 @@
<checkbox id="zenLooksAndFeelUseThemedToolbar" <checkbox id="zenLooksAndFeelUseThemedToolbar"
data-l10n-id="zen-side-panels-enabled" data-l10n-id="zen-side-panels-enabled"
preference="zen.sidebar.enabled"/> preference="zen.sidebar.enabled"/>
<hbox class="indent">
<checkbox id="zenLooksAndFeelSidebarCloseOnBlur"
data-l10n-id="zen-side-panels-close-on-blur"
preference="zen.sidebar.close-on-blur"/>
</hbox>
</groupbox> </groupbox>
<hbox id="zenVerticalTabsCategory" <hbox id="zenVerticalTabsCategory"

View File

@@ -15,6 +15,8 @@ zen-side-panels-description = Increase productivity by having multiple views at
zen-side-panels-enabled = zen-side-panels-enabled =
.label = Enable Web Side Panels .label = Enable Web Side Panels
zen-side-panels-close-on-blur =
.label = Close the panel when it loses focus if it's not pinned
zen-look-and-feel-compact-view-header = Show in compact view zen-look-and-feel-compact-view-header = Show in compact view
zen-look-and-feel-compact-view-description = Only show the toolbars you use! zen-look-and-feel-compact-view-description = Only show the toolbars you use!