From b04d6fc4f097ec213206ddafeb12924ee058143e Mon Sep 17 00:00:00 2001 From: Mauro Balades Date: Sat, 20 Jul 2024 01:49:23 +0200 Subject: [PATCH] Update Zen Browser styles for dark mode compatibility --- configs/common/mozconfig | 1 - .../base/content/ZenSidebarManager.mjs | 29 +++++++++++++++++++ .../base/content/nsContextMenu-js.patch | 16 ++++++++++ .../en-US/browser/zen-web-side-panels.ftl | 7 ++++- src/browser/themes/shared/zen-icons/icons.css | 3 +- 5 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/browser/base/content/nsContextMenu-js.patch diff --git a/configs/common/mozconfig b/configs/common/mozconfig index 81a8b628c..10cc3935a 100644 --- a/configs/common/mozconfig +++ b/configs/common/mozconfig @@ -39,7 +39,6 @@ if test "$ZEN_RELEASE"; then ac_add_options --disable-tests ac_add_options --enable-strip ac_add_options --enable-install-strip - ac_add_options --enable-lto=full ac_add_options --enable-rust-simd ac_add_options --disable-parental-controls diff --git a/src/browser/base/content/ZenSidebarManager.mjs b/src/browser/base/content/ZenSidebarManager.mjs index ca0991e0c..6f87d33af 100644 --- a/src/browser/base/content/ZenSidebarManager.mjs +++ b/src/browser/base/content/ZenSidebarManager.mjs @@ -19,6 +19,7 @@ var gZenBrowserManagerSidebar = { this.update(); this.close(); // avoid caching this.listenForPrefChanges(); + this.insertIntoContextMenu(); }, get sidebarData() { @@ -231,6 +232,19 @@ var gZenBrowserManagerSidebar = { this._updateWebPanel(); }, + _createNewPanel(url) { + let data = this.sidebarData; + let newName = "p" + new Date().getTime(); + data.index.push(newName); + data.data[newName] = { + url: url, + ua: false, + }; + Services.prefs.setStringPref("zen.sidebar.data", JSON.stringify(data)); + this._currentPanel = newName; + this.update(); + }, + _updateButtons() { for (let button of this.sidebarElement.querySelectorAll(".zen-sidebar-panel-button")) { if (button.getAttribute("zen-sidebar-id") === this._currentPanel) { @@ -477,6 +491,21 @@ var gZenBrowserManagerSidebar = { browser.remove(); this._closeSidebarPanel(); }, + + insertIntoContextMenu() { + const sibling = document.getElementById("context-stripOnShareLink"); + const menuitem = document.createXULElement("menuitem"); + menuitem.setAttribute("id", "context-zenAddToWebPanel"); + menuitem.setAttribute("hidden", "true"); + menuitem.setAttribute("oncommand", "gZenBrowserManagerSidebar.addPanelFromContextMenu();"); + menuitem.setAttribute("data-l10n-id", "zen-web-side-panel-context-add-to-panel"); + sibling.insertAdjacentElement("afterend", menuitem); + }, + + addPanelFromContextMenu() { + const url = gContextMenu.linkURL || gContextMenu.target.ownerDocument.location.href; + this._createNewPanel(url); + }, }; gZenBrowserManagerSidebar.init(); diff --git a/src/browser/base/content/nsContextMenu-js.patch b/src/browser/base/content/nsContextMenu-js.patch new file mode 100644 index 000000000..e7b273703 --- /dev/null +++ b/src/browser/base/content/nsContextMenu-js.patch @@ -0,0 +1,16 @@ +diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js +index b5c8dd44daaab18397cf01d0ef9f5288f5113925..f59b494dc287edaa148f726902244224330d81c5 100644 +--- a/browser/base/content/nsContextMenu.js ++++ b/browser/base/content/nsContextMenu.js +@@ -1047,6 +1047,11 @@ class nsContextMenu { + !this.isSecureAboutPage() + ); + ++ this.showItem( ++ "context-zenAddToWebPanel", ++ this.onLink && !this.onMailtoLink && !this.onTelLink ++ ); ++ + let copyLinkSeparator = document.getElementById("context-sep-copylink"); + // Show "Copy Link", "Copy" and "Copy Clean Link" with no divider, and "copy link" and "Send link to Device" with no divider between. + // Other cases will show a divider. diff --git a/src/browser/locales/en-US/browser/zen-web-side-panels.ftl b/src/browser/locales/en-US/browser/zen-web-side-panels.ftl index 6d8fd2bf9..34c6a7840 100644 --- a/src/browser/locales/en-US/browser/zen-web-side-panels.ftl +++ b/src/browser/locales/en-US/browser/zen-web-side-panels.ftl @@ -20,4 +20,9 @@ zen-web-side-panel-context-delete = .accesskey = D zen-web-side-panel-open-in-new-tab = .label = Open in New Tab - .accesskey = N \ No newline at end of file + .accesskey = N + + +zen-web-side-panel-context-add-to-panel = + .label = Add to Web Panels + .accesskey = A diff --git a/src/browser/themes/shared/zen-icons/icons.css b/src/browser/themes/shared/zen-icons/icons.css index 1a4d4a5fd..268a4e036 100644 --- a/src/browser/themes/shared/zen-icons/icons.css +++ b/src/browser/themes/shared/zen-icons/icons.css @@ -34,7 +34,8 @@ list-style-image: url("sidebars-right.svg") !important; } -#context_zenSplitTabs { +#context_zenSplitTabs, +#context-zenAddToWebPanel { /* TODO: Add split view icon */ --menu-image: url("sidebars-right.svg") !important; }