Compare commits

...

39 Commits

Author SHA1 Message Date
mr. M
b64d007315 Update glance activation method for different platforms 2024-10-30 20:58:14 +01:00
mr. M
88f954fc28 Update subproject commit in zen-components 2024-10-30 20:50:45 +01:00
mr. M
f6acb174a4 Update subproject commit in zen-components 2024-10-30 20:49:31 +01:00
mr. M
b8a927b163 Added escape key for glance 2024-10-30 20:49:03 +01:00
mr. M
4e93b06772 Refactor CSS animation translation in zen-animations.css 2024-10-30 20:36:28 +01:00
mr. M
65934f5e00 Fix issue with workspace button width in vertical tabs 2024-10-30 20:35:26 +01:00
mr. M
fb89aab252 Fix issue with workspace button width in vertical tabs 2024-10-30 19:42:20 +01:00
mr. M
db9a0edce5 Update display versions for Zen Browser and Zen Twilight 2024-10-30 18:38:33 +01:00
mr. M
a85baa5cca Fixed Workspace icon jumping in sidebar if not in strip mode (https://github.com/zen-browser/desktop/issues/2413) 2024-10-30 18:25:09 +01:00
mr. M
7d6125c367 Fixed workspaces creation not opening and polished glance! 2024-10-30 18:18:46 +01:00
mr. M
2caeea2a14 Enabled POLLY for macos, increasing speed 2024-10-30 17:30:26 +01:00
mr. M
c3e2447924 Fixed connection issues for some devides, enabling captive portal services 2024-10-30 17:29:08 +01:00
mr. M
f12d888e42 Fixed connection errors when using OCSP 2024-10-30 17:22:16 +01:00
mr. M
f92966d57a Fixed not getting notification permissions dialog (closes https://github.com/zen-browser/desktop/issues/2093) 2024-10-30 17:18:07 +01:00
mr. M
245c75ab2c Update subproject commit hash in l10n and zen-components 2024-10-30 17:16:29 +01:00
mr. M
ef0b6d947e Fixed moving multiple tabs causing glitches sometimes 2024-10-30 15:42:33 +01:00
mr. M
bd511d17e9 Update subproject commit hash in l10n 2024-10-30 15:13:46 +01:00
mr. M
b0b73b5d97 Update zen view compact mode preferences 2024-10-30 15:13:36 +01:00
mr. M
a8d2773f5d Fix animation and layout issues in tabs.js 2024-10-30 13:48:08 +01:00
mr. M
9749a79f7f Update zen-components subproject commit 2024-10-30 13:44:33 +01:00
mr. M
6a7cbf1a47 Added isolation attribute to browser elements (https://github.com/zen-browser/desktop/issues/2375) 2024-10-30 13:30:09 +01:00
mr. M
ff1d1474d4 Update zen-components subproject commit 2024-10-30 13:24:01 +01:00
mr. M
2b18df8398 Fix animation and layout issues in zen-components and zen-styles 2024-10-30 13:18:27 +01:00
mr. M
d978d35533 Added expand to fullscreen for glance 2024-10-30 12:45:22 +01:00
mr. M
10cd70e858 Allow unsigned addons to be installed (closes https://github.com/zen-browser/desktop/issues/2258) 2024-10-30 08:52:48 +01:00
mr. M
0552c2f245 [breaking] changed default layout of the customizable UI 2024-10-29 23:42:05 +01:00
mr. M
a08df8f9ef Added theme color deduction for workspace gradients and fixed macos titlebar buttons display 2024-10-29 20:45:38 +01:00
mr. M
1a906b746e Update firefox version to 132.0 2024-10-29 18:08:56 +01:00
mr. M
c916732f4e Tried to implement solution for https://github.com/zen-browser/desktop/issues/2375 2024-10-29 12:23:08 +01:00
mr. M
22df6d5638 Added support for meta key for glance 2024-10-29 10:50:37 +01:00
mr. M
4783f264df Fixed animations for glance 2024-10-29 10:21:47 +01:00
mr. M
64c3ff4573 Update l10n submodule 2024-10-29 09:51:48 +01:00
mr. M
9c105c988c Added settings page for zen glance 2024-10-29 09:51:36 +01:00
mr. M
c7bf92f20b Added browser loading for glance and animations! 2024-10-29 00:38:10 +01:00
mr. M
15548d9bb2 Added glance animations 2024-10-28 16:59:41 +01:00
mr. M
441379b6e8 Added glance overlay and functionality 2024-10-28 15:25:57 +01:00
mr. M
6e5d117720 Started working on zen glance 2024-10-28 14:44:41 +01:00
mr. M
c1aea93389 Fixed expand on hover not showing gradients background (closes https://github.com/zen-browser/desktop/issues/2360 and closes https://github.com/zen-browser/desktop/issues/2350) 2024-10-28 11:49:28 +01:00
mr. M
e28af61ac2 Made compact mode toolbar also inherit the background colors 2024-10-28 11:23:39 +01:00
49 changed files with 749 additions and 359 deletions

View File

@@ -28,7 +28,7 @@
## 🖥️ Compatibility
Zen is currently built using firefox version `131.0.3`! 🚀
Zen is currently built using firefox version `132.0`! 🚀
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!

View File

@@ -36,4 +36,7 @@ else
export RUSTFLAGS="-C target-feature=+v8.3a -C codegen-units=1 -Ctarget-cpu=apple-m1"
fi
export VERBOSE=1
#export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
# Enable polly for macos, since they have a more stable set of GPU drivers,
# unlike Linux, which has a lot of different drivers.
export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"

2
l10n

Submodule l10n updated: 3351a875d9...7c92e63885

View File

@@ -70,11 +70,6 @@ pref("browser.download.start_downloads_in_tmp_dir", true);
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
/** OCSP & CERTS / HPKP ***/
pref("security.OCSP.enabled", 0);
pref("security.remote_settings.crlite_filters.enabled", true);
pref("security.pki.crlite_mode", 2);
/** SSL / TLS ***/
pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
pref("browser.xul.error_pages.expert_bad_cert", true);
@@ -106,12 +101,6 @@ pref("privacy.userContext.ui.enabled", true);
/** SAFE BROWSING ***/
pref("browser.safebrowsing.downloads.remote.enabled", false);
/** MOZILLA ***/
pref("permissions.default.desktop-notification", 2);
pref("permissions.default.geo", 2);
pref("permissions.manager.defaultsUrl", "");
pref("webchannel.allowObject.urlWhitelist", "");
/** TELEMETRY ***/
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
@@ -141,9 +130,6 @@ pref("browser.tabs.crashReporting.sendReport", false);
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
/** DETECTION ***/
pref("captivedetect.canonicalURL", "");
pref("network.captive-portal-service.enabled", false);
pref("network.connectivity-service.enabled", false);
pref("dom.private-attribution.submission.enabled", false);
/****************************************************************************

View File

@@ -75,24 +75,35 @@ pref('zen.welcomeScreen.enabled', true);
pref('zen.welcomeScreen.seen', false);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.tabs.show-newtab-under', false);
pref('zen.tabs.show-newtab-under', true);
pref('zen.theme.accent-color', "#aac7ff");
pref('zen.theme.border-radius', 8); // In pixels
pref('zen.theme.content-element-separation', 6); // In pixels
pref('zen.theme.toolbar-themed', true);
pref('zen.theme.pill-button', false);
pref('zen.theme.gradient', true);
pref('zen.view.compact', false);
pref('zen.view.experimental-rounded-view', true);
pref('zen.theme.color-prefs.use-workspace-colors', true);
pref('zen.theme.color-prefs.amoled', false);
pref('zen.theme.color-prefs.colorful', false);
pref('zen.view.compact', false);
pref('zen.view.compact.hide-tabbar', true);
pref('zen.view.compact.hide-toolbar', false);
pref('zen.view.compact.toolbar-flash-popup', true);
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
pref('zen.view.compact.color-toolbar', true);
pref('zen.view.compact.color-sidebar', true);
pref('zen.glance.enabled', true);
pref('zen.glance.hold-duration', 300); // in ms
#ifdef XP_MACOSX
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
#else
pref('zen.glance.activation-method', 'ctrl'); // ctrl, alt, shift, none, hold
#endif
pref('zen.view.sidebar-height-throttle', 200); // in ms
pref('zen.view.sidebar-expanded', true);
@@ -166,7 +177,8 @@ pref('browser.migrate.opera.enabled', true);
// DNS
// pref('network.trr.mode', 5);
pref('xpinstall.signatures.required', false);
// security: They must enable this themselves, to avoid people downloading malware
//pref('xpinstall.signatures.required', false);
// Experimental Zen Features
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
@@ -243,3 +255,5 @@ pref("network.fetchpriority.enabled", true);
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
pref("network.proxy.type", 0);
// for the new layout:
pref('browser.download.autohideButton', false);

View File

@@ -2,7 +2,7 @@ export var ZenCustomizableUI = new (class {
constructor() {}
TYPE_TOOLBAR = 'toolbar';
defaultSidebarIcons = ['zen-sidepanel-button', 'zen-workspaces-button', 'new-tab-button'];
defaultSidebarIcons = ['zen-sidepanel-button', 'zen-workspaces-button', 'downloads-button'];
startup(CustomizableUIInternal) {
CustomizableUIInternal.registerArea(

View File

@@ -73,7 +73,7 @@
tabs.style.maxHeight = '0px'; // reset to 0
const toolbarRect = toolbarItems.getBoundingClientRect();
// -5 for the controls padding
let totalHeight = toolbarRect.height - (this.contentElementSeparation * 2) - 5;
let totalHeight = toolbarRect.height - (this.contentElementSeparation) - 5;
// remove the height from other elements that aren't hidden
const otherElements = document.querySelectorAll('#tabbrowser-tabs > *:not([hidden="true"])');
for (let tab of otherElements) {

View File

@@ -47,7 +47,8 @@ var gZenUIManager = {
onPopupShowing(showEvent) {
for (const el of this._popupTrackingElements) {
if (!el.contains(event.explicitOriginalTarget)) {
// target may be inside a shadow root, not directly under the element
if (!el.contains(showEvent.explicitOriginalTarget)) {
continue;
}
document.removeEventListener('mousemove', this.__removeHasPopupAttribute);
@@ -115,7 +116,6 @@ var gZenVerticalTabsManager = {
const onHover = Services.prefs.getBoolPref('zen.view.sidebar-expanded.on-hover');
const expanded = Services.prefs.getBoolPref('zen.view.sidebar-expanded');
const sidebar = this.navigatorToolbox;
if (onHover) {
// if the sidebar is not expanded, and hover detection is enabled, show the sidebar

View File

@@ -1,21 +1,18 @@
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
index 108160d9469d44f47c93a3808402e4b27ff59777..39a7b691302bf13e1b5990f46428cff6807a8e56 100644
index 7f71abe7d80e4c09dd088517ec9ef106c7cb8654..d094aeb36e1595d4d28d518654fb3ba848003c91 100644
--- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml
@@ -23,11 +23,16 @@
@@ -22,7 +22,13 @@
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
</vbox>
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
<vbox id="appcontent" flex="1">
+ <html:div id="zen-appcontent-navbar-container"></html:div>
<!-- gNotificationBox will be added here lazily. -->
+ <hbox id="zen-tabbox-wrapper" flex="1">
<tabbox id="tabbrowser-tabbox"
flex="1" tabcontainer="tabbrowser-tabs">
+#include zen-sidebar-panel.inc.xhtml
+#include zen-splitview-overlay.inc.xhtml
<tabpanels id="tabbrowser-tabpanels"
flex="1" selectedIndex="0"/>
</tabbox>
+ </hbox>
</vbox>
+<vbox flex="1">
+<html:div id="zen-appcontent-navbar-container"></html:div>
+<hbox id="zen-tabbox-wrapper" flex="1">
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
+ #include zen-tabbrowser-elements.inc.xhtml
<tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/>
</tabbox>
</hbox>
+</vbox>
+</hbox>

View File

@@ -1,11 +1,11 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index bee5309c04775adff8652bfe6c54b2d466e821ac..cfeaf7cf2e98c35e76bdd5451f90b004a04d4474 100644
index 9df41bb3c82919839ee1408aa4d177ea7ee40a56..e37c64fa2c2ea39762be4285a1a7055463ded537 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -143,13 +143,15 @@ var gBrowserInit = {
gNavToolbox.palette = document.getElementById(
"BrowserToolbarPalette"
).content;
@@ -152,13 +152,15 @@ var gBrowserInit = {
// tell CUI to ignore this element when it builds the toolbar areas
elem.setAttribute("skipintoolbarset", "true");
}
+ ZenCustomizableUI.init(window);
for (let area of CustomizableUI.areas) {
let type = CustomizableUI.getAreaType(area);
@@ -16,16 +16,16 @@ index bee5309c04775adff8652bfe6c54b2d466e821ac..cfeaf7cf2e98c35e76bdd5451f90b004
}
}
+ ZenCustomizableUI.registerToolbarNodes(window);
BrowserSearch.initPlaceHolder();
// Hack to ensure that the various initial pages favicon is loaded
@@ -239,6 +241,10 @@ var gBrowserInit = {
for (let elem of nonRemovables) {
elem.setAttribute("removable", "false");
elem.removeAttribute("skipintoolbarset");
@@ -253,6 +255,10 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
+ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
+Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {
ToolbarKeyboardNavigator.init();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index a29d7a84e84651ea0bdc9be8e4ac650bde2e048a..bc22e55a66686fbae95047686f845f71a0c3aae9 100644
index ccd83c15d0d73a1e53bdbfdfbe6fed43a26c961d..f18a6abf7debb97539a4cdf8422315b4dff08adb 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -10,7 +10,7 @@ index a29d7a84e84651ea0bdc9be8e4ac650bde2e048a..bc22e55a66686fbae95047686f845f71
DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -629,6 +630,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
@@ -632,6 +633,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
false
);
@@ -26,27 +26,19 @@ index a29d7a84e84651ea0bdc9be8e4ac650bde2e048a..bc22e55a66686fbae95047686f845f71
customElements.setElementCreationCallback("screenshots-buttons", () => {
Services.scriptloader.loadSubScript(
"chrome://browser/content/screenshots/screenshots-buttons.js",
@@ -3435,6 +3445,10 @@ var XULBrowserWindow = {
@@ -3438,6 +3448,11 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
+ gZenTabUnloader.onLocationChange(gBrowser.selectedBrowser);
+ gZenGlanceManager.onLocationChange(gBrowser.selectedBrowser);
+
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
@@ -4769,7 +4783,7 @@ function setToolbarVisibility(
);
}
- const overlapAttr = "BookmarksToolbarOverlapsBrowser";
+ const overlapAttr = "BookmarksToolbarOverlapsBrowser__ignore"; // Original string was "BookmarksToolbarOverlapsBrowser" but it's not used and it only bugs the UI.
switch (isVisible) {
case true:
case "always":
@@ -7609,6 +7623,12 @@ var gDialogBox = {
@@ -7289,6 +7304,12 @@ var gDialogBox = {
parentElement.showModal();
this._didOpenHTMLDialog = true;

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d945d53ac 100644
index 12fa0cf79aade28581016adf96df85386dabdcef..4c8c2f791b29da0308d1a24778c1e7f5a9bb7293 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
@@ -11,7 +11,7 @@ index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d
<vbox id="titlebar">
<!-- Menu -->
@@ -32,10 +32,11 @@
@@ -32,13 +32,14 @@
<hbox class="titlebar-spacer" type="pre-tabs"/>
@@ -20,10 +20,13 @@ index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d
<toolbartabstop/>
<hbox id="TabsToolbar-customization-target" flex="1">
<toolbarbutton id="firefox-view-button"
+ hidden="true"
class="toolbarbutton-1 chromeclass-toolbar-additional"
data-l10n-id="toolbar-button-firefox-view-2"
role="button"
+ hidden="true"
aria-pressed="false"
oncommand="FirefoxViewHandler.openTab();"
onmousedown="FirefoxViewHandler.openToolbarMouseEvent(event);"
@@ -50,7 +51,7 @@
aria-multiselectable="true"
setfocus="false"
@@ -33,12 +36,12 @@ index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d
stopwatchid="FX_TAB_CLICK_MS">
<hbox class="tab-drop-indicator" hidden="true"/>
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
@@ -66,7 +67,7 @@
tooltip="dynamic-shortcut-tooltip"
data-l10n-id="tabs-toolbar-new-tab"/>
</html:div>
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" style="min-width: 1px;" clicktoscroll="" scrolledtostart="" scrolledtoend="">
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" style="min-width: 1px;" clicktoscroll="" scrolledtostart="" scrolledtoend="">
@@ -59,7 +60,7 @@
# the current structure that we may want to revisit.
<html:div id="vertical-pinned-tabs-container"></html:div>
<html:div id="vertical-pinned-tabs-container-separator"></html:div>
- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
<hbox id="tabbrowser-arrowscrollbox-periphery">
<toolbartabstop/>
@@ -55,15 +58,7 @@ index 18b91c95b88d11ddb257de03f12bc3e4cc75a96a..f117cfa7c9d1f9eb537cebbef42a9d2d
</toolbar>
</vbox>
@@ -471,6 +473,7 @@
<toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
badged="true"
+ hidden="true"
delegatesanchor="true"
onmousedown="gSync.toggleAccountPanel(this, event)"
onkeypress="gSync.toggleAccountPanel(this, event)"
@@ -522,6 +525,7 @@
@@ -531,6 +534,7 @@
consumeanchor="PanelUI-button"
data-l10n-id="appmenu-menu-button-closed2"/>
</toolbaritem>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index 6c2317b8036378c6b8e0ad9a4fe71388bcb385f5..4bf277b02d3c69efc0f2d46c8b0f9deb7d7fb45a 100644
index 7f3dc585937c5ac96c0d09a786515305afb4fe1a..9216931e7d805743f0b00e74039be042456e63f3 100644
--- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -1153,6 +1153,13 @@ export class nsContextMenu {
@@ -1047,6 +1047,13 @@ export class nsContextMenu {
!this.isSecureAboutPage()
);
@@ -13,6 +13,6 @@ index 6c2317b8036378c6b8e0ad9a4fe71388bcb385f5..4bf277b02d3c69efc0f2d46c8b0f9deb
+
+ this.showItem("context-zenSplitLink", this.onLink && !this.onMailtoLink && !this.onTelLink);
+
let copyLinkSeparator = this.document.getElementById(
"context-sep-copylink"
);
let canNotStrip =
lazy.STRIP_ON_SHARE_CAN_DISABLE && !this.#canStripParams();

View File

@@ -16,17 +16,19 @@
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-urlbar.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-workspaces.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-decks.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-glance.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-profile-dialog.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-sidebar-panels.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-popup.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/content/zen-styles/zen-compact-mode.css" />
<link rel="stylesheet" type="text/css" href="chrome://browser/skin/zen-icons/icons.css" />
</linkset>
<!-- Scripts used all over the browser -->
<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" />
<script src="chrome://browser/content/zen-components/ZenActorsManager.mjs" />
<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs" />
<script src="chrome://browser/content/zen-components/ZenThemesImporter.mjs" />
<script src="chrome://browser/content/zen-components/ZenCompactMode.mjs" />
<script src="chrome://browser/content/ZenUIManager.mjs" />

View File

@@ -19,6 +19,8 @@
content/browser/zen-components/ZenPinnedTabManager.mjs (content/zen-components/src/ZenPinnedTabManager.mjs)
content/browser/zen-components/ZenCommonUtils.mjs (content/zen-components/src/ZenCommonUtils.mjs)
content/browser/zen-components/ZenGradientGenerator.mjs (content/zen-components/src/ZenGradientGenerator.mjs)
content/browser/zen-components/ZenGlanceManager.mjs (content/zen-components/src/ZenGlanceManager.mjs)
content/browser/zen-components/ZenActorsManager.mjs (content/zen-components/src/ZenActorsManager.mjs)
content/browser/zen-styles/zen-theme.css (content/zen-styles/zen-theme.css)
content/browser/zen-styles/zen-buttons.css (content/zen-styles/zen-buttons.css)
@@ -32,6 +34,7 @@
content/browser/zen-styles/zen-sidebar.css (content/zen-styles/zen-sidebar.css)
content/browser/zen-styles/zen-toolbar.css (content/zen-styles/zen-toolbar.css)
content/browser/zen-styles/zen-decks.css (content/zen-styles/zen-decks.css)
content/browser/zen-styles/zen-glance.css (content/zen-styles/zen-glance.css)
content/browser/zen-styles/zen-browser-container.css (content/zen-styles/zen-browser-container.css)
content/browser/zen-styles/zen-workspaces.css (content/zen-styles/zen-workspaces.css)
content/browser/zen-styles/zen-profile-dialog.css (content/zen-styles/zen-profile-dialog.css)
@@ -54,3 +57,5 @@
# Actors
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceParent.sys.mjs)
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (content/zen-components/src/actors/ZenThemeMarketplaceChild.sys.mjs)
content/browser/zen-components/actors/ZenGlanceChild.sys.mjs (content/zen-components/src/actors/ZenGlanceChild.sys.mjs)
content/browser/zen-components/actors/ZenGlanceParent.sys.mjs (content/zen-components/src/actors/ZenGlanceParent.sys.mjs)

View File

@@ -0,0 +1,14 @@
<hbox id="zen-glance-overlay" hidden="true" onclick="gZenGlanceManager.onOverlayClick(event)">
<hbox id="zen-glance-content">
<vbox id="zen-glance-browser-container">
<vbox id="zen-glance-sidebar-container">
<toolbarbutton id="zen-glance-sidebar-close" class="toolbarbutton-1" oncommand="gZenGlanceManager.closeGlance()"/>
<toolbarbutton id="zen-glance-sidebar-open" class="toolbarbutton-1" oncommand="gZenGlanceManager.fullyOpenGlance()"/>
</vbox>
<vbox id="zen-glance-browser">
<hbox id="zen-glance-loading"></hbox>
</vbox>
</vbox>
</hbox>
<hbox id="zen-glance-tabs" hidden="true"></hbox>
</hbox>

View File

@@ -213,3 +213,129 @@
right: -2px;
}
}
/* Mark: Zen Glance */
@keyframes zen-glance-overlay-animation {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes zen-glance-overlay-animation-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes zen-glance-content-animation {
/* make the box appear from initial width/height and x/y coordinates */
0% {
opacity: 1;
}
30% {
top: 50%;
left: 50%;
transform: translate(-50%, -50%) translateZ(0);
}
70% {
/* make the box grow to full width/height */
opacity: 1;
transform: translate(-50%, -50%) translateZ(0);
top: 50%;
left: 50%;
width: 87%;
height: 87%;
}
100% {
/* make the box shrink to final width/height and x/y coordinates */
transform: translate(-50%, -50%) translateZ(0);
opacity: 1;
width: 85%;
height: 85%;
top: 50%;
left: 50%;
}
}
@keyframes zen-glance-content-animation-out {
0% {
opacity: 0;
}
5% {
opacity: 1;
}
80% {
opacity: 1;
}
100% {
transform: translate(-50%, -50%);
opacity: 1;
width: 85%;
height: 85%;
top: 50%;
left: 50%;
}
}
@keyframes zen-glance-buttons-animation-full {
from {
width: 85%;
height: 85%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
to {
width: 100%;
height: 100%;
top: 0;
left: 0;
opacity: 1;
transform: none;
}
}
@keyframes zen-glance-loading-animation {
0% {
opacity: 1;
width: 80%;
}
90% {
width: 100%;
}
100% {
opacity: 0;
}
}
@keyframes zen-glance-buttons-animation {
from {
right: 0;
opacity: 0;
width: fit-content;
}
to {
opacity: 1;
transform: translateX(-100%) translateY(-50%);
}
}

View File

@@ -5,15 +5,20 @@
position: relative;
box-shadow: 0 0 1px 1px light-dark(rgba(0, 0, 0, 0.1), var(--zen-colors-border));
& .browserContainer {
& .browserContainer,
#zen-glance-browser browser {
overflow: hidden;
border-radius: var(--zen-webview-border-radius, var(--zen-border-radius));
}
}
@media (-moz-bool-pref: 'zen.view.experimental-rounded-view') {
&.deck-selected .browserContainer {
mix-blend-mode: multiply;
}
@media (-moz-bool-pref: 'zen.view.experimental-rounded-view') {
#tabbrowser-tabpanels,
#zen-glance-browser {
mix-blend-mode: multiply;
-moz-osx-font-smoothing: grayscale;
isolation: isolate;
}
}
}

View File

@@ -1,5 +1,4 @@
#browser,
#appcontent,
#tabbrowser-tabpanels {
background: transparent !important;
}
@@ -33,7 +32,6 @@
width: 100%;
}
:root:not([inDOMFullscreen='true']) #appcontent,
#sidebar-box {
/** Sidebar is already hidden in full screen mode */
border: none;
@@ -85,6 +83,8 @@
height: 100%;
}
:root:not([inDOMFullscreen='true']) #tabbrowser-tabbox {
padding: 2px; /* To allow the web view's shadow to be visible */
@media (-moz-platform: macos) {
.titlebar-buttonbox-container {
margin-inline-end: 8px;
}
}

View File

@@ -3,6 +3,10 @@
@media (-moz-bool-pref: 'zen.view.compact') {
:root:not([customizing]):not([inDOMFullscreen='true']) {
@media (-moz-bool-pref: 'zen.view.compact.hide-tabbar') {
#zen-glance-overlay {
width: calc(100% - var(--zen-element-separation) * 2);
}
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned='true']) {
margin-left: calc(var(--zen-sidebar-web-panel-spacing) * 2) !important;
}
@@ -11,6 +15,11 @@
padding-inline-start: calc(var(--zen-toolbox-padding) - var(--toolbarbutton-outer-padding)) !important;
}
&:not([inDOMFullscreen='true']) #zen-glance-overlay {
margin-left: var(--zen-element-separation) !important;
padding-right: var(--zen-element-separation) !important;
}
/* Set the extra paddings */
#tabbrowser-tabpanels {
:root:not([inDOMFullscreen='true']) #browser:has(#navigator-toolbox[zen-right-side='true']) & {
@@ -28,7 +37,7 @@
#navigator-toolbox {
--zen-toolbox-max-width: 54px !important;
--zen-compact-float: calc(var(--zen-element-separation) + 1px);
--zen-compact-float: calc(var(--zen-element-separation) - 1px);
position: absolute;
z-index: 9;
transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;
@@ -41,6 +50,7 @@
padding-top: 0 !important;
#browser:has(#navigator-toolbox[zen-right-side='true']) & {
--zen-compact-float: calc(var(--zen-element-separation) + 1px);
padding-left: unset !important;
padding-right: var(--zen-compact-float) !important;
left: calc(100% - var(--zen-element-separation));
@@ -49,13 +59,17 @@
}
#titlebar {
background: var(--zen-main-browser-background) !important;
background-attachment: fixed !important;
background-size: 2000px !important; /* Dont ask me why */
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2);
border-radius: calc(var(--zen-border-radius) + 2px);
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1);
border-radius: calc(var(--zen-border-radius) - 2px);
padding: var(--zen-toolbox-padding) !important;
position: relative;
background: var(--zen-dialog-background);
@media (-moz-bool-pref: 'zen.view.compact.color-sidebar') {
background: var(--zen-main-browser-background) !important;
background-attachment: fixed !important;
background-size: 2000px !important; /* Dont ask me why */
}
}
/* Mark: toolbox as collapsed */
#zen-tabbox-wrapper > #navigator-toolbox:not(#navigator-toolbox:is(#navigator-toolbox[zen-expanded='true'])) {
@@ -94,6 +108,10 @@
}
@media (-moz-bool-pref: 'zen.view.compact.hide-toolbar') {
#zen-glance-overlay {
height: calc(100% - var(--zen-element-separation) * 2);
}
#navigator-toolbox {
--zen-toolbox-top-align: var(--zen-element-separation);
}
@@ -102,6 +120,10 @@
padding-top: var(--zen-element-separation) !important;
}
&:not([inDOMFullscreen='true']) #zen-glance-overlay {
margin-top: var(--zen-element-separation) !important;
}
#sidebar-box,
#zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel:not([pinned='true'])) {
margin-top: var(--zen-element-separation) !important;
@@ -112,26 +134,25 @@
}
#zen-appcontent-navbar-container {
--zen-compact-toolbar-offset: 5px;
position: absolute;
top: 0;
transform: translateY(calc(-100% + var(--zen-element-separation) + 1px));
left: 0;
left: calc(var(--zen-element-separation) + var(--zen-compact-toolbar-offset));
z-index: 10;
background: var(--zen-themed-toolbar-bg);
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.1) !important;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.3) !important;
border-bottom-left-radius: var(--zen-border-radius);
border-bottom-right-radius: var(--zen-border-radius);
border: 1px solid var(--zen-colors-border);
border-top-width: 0px;
transition: all 0.1s ease-in-out;
width: 100%;
width: calc(100% - ((var(--zen-element-separation) + var(--zen-compact-toolbar-offset)) * 2));
opacity: 0;
background: var(--zen-dialog-background);
:root[tabsintitlebar][sizemode='normal']:not([gtktiledwindow='true']) & {
border-top-left-radius: env(-moz-gtk-csd-titlebar-radius);
border-top-right-radius: env(-moz-gtk-csd-titlebar-radius);
border-left-width: 0;
border-right-width: 0;
@media (-moz-bool-pref: 'zen.view.compact.color-toolbar') {
background-attachment: fixed;
backdrop-filter: blur(5px);
background: var(--zen-main-browser-background);
background-size: 100% 2000px;
}
}

View File

@@ -0,0 +1,182 @@
#zen-glance-overlay {
height: calc(100% - var(--zen-element-separation));
width: calc(100% - var(--zen-element-separation));
display: flex;
position: absolute;
top: 0;
left: 0;
z-index: 3;
#browser:has(#navigator-toolbox[zen-right-side='true']) & {
margin-left: var(--zen-element-separation);
}
&:not(:has([animate-full-end='true'])):not(:has([animate-full='true'])) {
background: color-mix(in srgb, var(--zen-colors-secondary) 30%, transparent 70%);
backdrop-filter: blur(2px);
animation: zen-glance-overlay-animation 0.1s ease-in-out forwards;
}
border-radius: var(--zen-border-radius);
&[hidden='true'] {
display: none;
}
&[fade-out='true'] {
background: transparent;
opacity: 1;
& #zen-glance-content {
& #zen-glance-browser-container {
animation: zen-glance-content-animation-out .3s ease-in-out forwards !important;
animation-direction: reverse !important;
& browser {
opacity: 0;
transition: opacity .1s ease-in-out;
}
& #zen-glance-sidebar-container {
opacity: 0;
transition: opacity .1s ease-in-out;
}
& #zen-glance-loading {
width: 0 !important;
opacity: 0 !important;
transition: none !important;
}
}
}
}
& #zen-glance-content {
z-index: 1;
width: 100%;
height: 100%;
display: flex;
& #zen-glance-browser-container {
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2);
transform: translate(var(--initial-x), var(--initial-y));
width: var(--initial-width);
height: var(--initial-height);
position: absolute;
border-radius: var(--zen-border-radius);
opacity: 0;
top: 0;
left: 0;
&[has-finished-animation='true'] {
position: relative !important;
transition: 0s !important;
transform: none !important;
margin: auto !important;
top: 0 !important;
left: 0 !important;
}
& #zen-glance-browser {
border-radius: var(--zen-border-radius);
background: var(--zen-dialog-background);
overflow: hidden;
width: 100%;
position: relative;
border-radius: var(--zen-border-radius);
height: 100%;
}
& #zen-glance-sidebar-container {
position: absolute;
top: 10%;
left: 0;
transform: translateY(-50%);
opacity: 0;
background: var(--zen-dialog-background);
border: 1px solid var(--zen-colors-border);
border-right: none;
border-top-left-radius: var(--zen-border-radius);
border-bottom-left-radius: var(--zen-border-radius);
padding: 5px;
gap: 6px;
animation: zen-glance-buttons-animation 0.2s ease-in-out forwards;
animation-delay: 0.3s;
& toolbarbutton {
width: 32px;
height: 32px;
}
}
& #zen-glance-loading {
height: 2px;
background: var(--zen-primary-color);
pointer-events: none;
position: absolute;
left: 0;
top: 0;
&[not-loading='true'] {
width: 0;
}
&[loading='true'] {
width: 80%;
transition: width 8s ease-in-out;
}
&:not([loading='true']):not([not-loading='true']) {
animation: zen-glance-loading-animation .8s ease-in-out forwards;
}
}
& browser {
width: 100%;
height: 100%;
opacity: 1;
transition: opacity 0.3s ease-in-out;
transition-delay: 0.2s;
}
&[animate-full='true'] {
opacity: 1;
animation: zen-glance-buttons-animation-full 0.3s ease-in-out forwards !important;
& #zen-glance-sidebar-container {
opacity: 0 !important;
}
& #zen-glance-loading {
width: 0 !important;
opacity: 0 !important;
}
}
&[animate='true'] {
animation: zen-glance-content-animation .4s ease-in-out forwards;
animation-delay: 0.1s;
&:not([animate-end='true']) {
pointer-events: none;
& browser {
opacity: 0;
}
& #zen-glance-sidebar-container {
opacity: 0;
animation: none;
pointer-events: none;
}
}
}
}
}
}

View File

@@ -1,7 +1,7 @@
panel[type='arrow'][animate][animate='open'] {
animation: zen-jello-animation 0.2s ease-in-out;
animation: zen-jello-animation 0.3s ease-in-out;
}
panel[type='arrow'][animate]:not([animate='open']) {
animation: zen-jello-out-animation 0.2s ease-in-out;
animation: zen-jello-out-animation 0.3s ease-in-out;
}

View File

@@ -19,6 +19,10 @@
--zen-toolbox-padding: 5px;
}
#vertical-pinned-tabs-container-separator {
display: none !important; /* We never needed you, go away! */
}
#navigator-toolbox {
--border-radius-medium: 8px;
--tab-border-radius: var(--border-radius-medium);
@@ -32,6 +36,7 @@
padding-top: var(--zen-toolbox-top-align);
padding-bottom: var(--zen-element-separation) !important;
border: none;
order: 0 !important;
display: flex;
@@ -44,6 +49,7 @@
#TabsToolbar-customization-target {
position: relative;
max-width: 100%;
gap: 0;
&::after {
content: '';
@@ -80,6 +86,8 @@
margin-inline-start: 0 !important;
padding-inline-start: 0 !important;
--tab-inner-inline-margin: 0;
position: relative;
border-bottom: 0px solid transparent !important;
@@ -87,17 +95,19 @@
--tab-selected-bgcolor: light-dark(rgba(255,255,255,.7), color-mix(in srgb, var(--zen-colors-secondary) 50%, transparent 50%));
grid-gap: 0 !important;
&[overflow]::after,
#vertical-tabs-newtab-button {
/* Hide separator they give us, eww */
display: none !important;
}
& .tabbrowser-tab {
animation: zen-slide-in 0.2s ease-in-out;
max-width: unset !important;
max-width: unset;
padding: 0 !important;
position: relative;
height: calc(var(--tab-min-height) + var(--tab-block-margin) * 2) !important;
min-height: calc(var(--tab-min-height) + var(--tab-block-margin) * 2) !important;
border-radius: var(--border-radius-medium);
& .tab-background {
@@ -197,6 +207,10 @@
padding-left: var(--zen-toolbox-padding);
}
& #zen-workspaces-button[as-button='true'] {
width: calc(100% - 10px) !important;
}
& #zen-workspaces-button {
margin-left: 2px;
margin-right: 2px;
@@ -221,6 +235,10 @@
transform: translateX(-50%);
position: absolute;
}
& .tabbrowser-tab {
width: 100%;
}
}
& #zen-sidebar-icons-wrapper {
@@ -293,7 +311,13 @@
}
& #tabbrowser-tabs {
--tab-inline-padding: 8px;
& .tabbrowser-tab {
&:not([pinned]) .tab-label-container {
display: flex;
}
& .tab-background {
@media not (prefers-color-scheme: dark) {
&:is([selected], [multiselected]) {
@@ -301,6 +325,7 @@
}
}
margin-inline: var(--tab-block-margin);
width: -moz-available;
}
&:not([pinned]):is(:hover, [visuallyselected]) .tab-close-button {
@@ -339,12 +364,24 @@
#navigator-toolbox[zen-expanded='true']:not([zen-user-hover='true'])
)
) {
--tab-min-width: 36px !important;
/* Important: When changin this value, make sure expand on hover doesn't break! */
--zen-toolbox-max-width: 49px; /* 1px more because the browser view has one pixel of padding to avoid the border being cut off */
--zen-toolbox-padding: 8px;
--zen-toolbox-padding: 6px;
--zen-toolbox-max-width: calc(var(--tab-min-width) + var(--zen-toolbox-padding) * 2);
max-width: var(--zen-toolbox-max-width) !important;
min-width: var(--zen-toolbox-max-width) !important;
--zen-tabbar-offset: 1px; /* Fix the tabbar offset, because there's a shadow */
&[zen-right-side='true'] {
margin-left: var(--zen-tabbar-offset);
}
&:not([zen-right-side='true']) {
margin-right: var(--zen-tabbar-offset);
}
& #vertical-tabs-newtab-button {
padding: 0 !important;
background: transparent !important;
@@ -391,6 +428,10 @@
transform: translateX(-50%);
position: absolute;
}
& .tabbrowser-tab {
max-width: var(--tab-min-width);
}
}
& #TabsToolbar-customization-target {
@@ -402,16 +443,20 @@
}
& #tabbrowser-tabs {
--tab-min-width: 36px !important;
margin-top: -2px;
& .tabbrowser-tab {
margin: 0 auto;
width: var(--tab-min-width) !important;
height: var(--tab-min-width) !important;
& .tab-background:is([selected], [multiselected]) {
@media not (prefers-color-scheme: dark) {
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.12) !important;
& .tab-background {
margin-inline: auto !important;
&:is([selected], [multiselected]) {
box-shadow: 0 0 1px 1px rgba(0,0,0,.1);
@media not (prefers-color-scheme: dark) {
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.12) !important;
}
}
}
@@ -419,6 +464,7 @@
display: flex;
align-content: center;
justify-content: center;
padding: 0 !important;
& .tab-label-container {
display: none;
@@ -543,17 +589,20 @@
& #TabsToolbar {
z-index: 100 !important;
width: 250px !important;
background-color: var(--zen-dialog-background);
border-top-color: var(--zen-colors-border);
background: var(--zen-main-browser-background) !important;
background-attachment: fixed !important;
background-size: 2000px !important; /* Dont ask me why */
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2);
position: absolute;
padding: var(--zen-toolbox-padding);
padding-top: 0;
transition: 0 !important;
/*animation: zen-vtabs-animation 0.3s ease-in-out;*/
-moz-window-dragging: no-drag;
overflow: hidden;
transition: width 0.2s !important;
border-right: 1px solid var(--zen-colors-border);
& .tab-throbber,
& .tab-icon-pending,
@@ -595,8 +644,6 @@
&[zen-right-side='true'] #TabsToolbar {
right: 0;
border-right: 0;
border-left: 1px solid var(--zen-colors-border);
border-top-left-radius: var(--zen-border-radius);
border-top-right-radius: 0;
}

View File

@@ -38,7 +38,10 @@
color-mix(in srgb, var(--zen-primary-color) 40%, black 60%),
color-mix(in srgb, var(--zen-primary-color) 40%, white 60%)
) !important;
--in-content-primary-button-background-active: var(--zen-colors-hover-bg) !important;
--in-content-primary-button-background-active: light-dark(
color-mix(in srgb, var(--zen-primary-color) 30%, black 70%),
color-mix(in srgb, var(--zen-primary-color) 30%, white 70%)
) !important;
--in-content-primary-button-text-color: light-dark(white, black) !important;
--in-content-primary-button-border-color: transparent !important;
--in-content-primary-button-border-hover: transparent !important;
@@ -69,7 +72,13 @@
--button-primary-active-bgcolor: var(--in-content-primary-button-background-active) !important;
--button-primary-color: var(--in-content-primary-button-text-color) !important;
--color-accent-primary-hover: var(--zen-primary-color) !important;
--button-background-color: var(--in-content-button-background) !important;
--button-background-color-hover: var(--in-content-button-background-hover) !important;
--button-background-color-active: var(--in-content-primary-button-background-active) !important;
--color-accent-primary: var(--button-primary-bgcolor) !important;
--color-accent-primary-hover: var(--button-primary-hover-bgcolor) !important;
--color-accent-primary-active: var(--button-primary-active-bgcolor) !important;
--in-content-page-background: var(--zen-colors-tertiary) !important;
--zen-in-content-dialog-background: var(--zen-colors-tertiary);
@@ -174,10 +183,3 @@
}
}
}
@media not (-moz-bool-pref: 'zen.theme.toolbar-themed') {
:root {
--toolbar-bgcolor: light-dark(#e6e6e6, #1b1b1b) !important;
--zen-themed-toolbar-bg: var(--toolbar-bgcolor);
}
}

View File

@@ -36,7 +36,7 @@
}
#urlbar:not([focused='true']):not([breakout-extend="true"]) > #urlbar-background {
background: color-mix(in srgb, light-dark(#fff, var(--zen-colors-secondary)) 65%, transparent 35%) !important;
background: color-mix(in srgb, light-dark(#fff, var(--zen-colors-tertiary)) 60%, transparent 40%) !important;
backdrop-filter: blur(10px);
}

View File

@@ -79,7 +79,7 @@
}
}
:root:has(#navigator-toolbox:not([zen-has-hover='true'])) &[as-button='true'] {
&[as-button='true'] {
margin: auto;
padding: var(--toolbarbutton-inner-padding) !important;
width: calc(2 * var(--toolbarbutton-inner-padding) + 16px) !important;

View File

@@ -0,0 +1,3 @@
#include zen-sidebar-panel.inc.xhtml
#include zen-splitview-overlay.inc.xhtml
#include zen-glance.inc.xhtml

View File

@@ -1,13 +1,13 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
index 0344fcb566e8e0bedd92b0d45e42aea38de5c329..0d5296700590dd0c8a90929976b8cbc5370e7b47 100644
index 768768c7d44860e1725f41594da9bcc8c92f4a1d..c04b0d54a41fbf8a22b516524809186d29842b21 100644
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -30,7 +30,7 @@
@@ -28,7 +28,7 @@
<toolbarseparator/>
<vbox class="panel-subview-body">
<toolbarbutton id="identity-popup-security-button"
- class="identity-popup-security-connection subviewbutton subviewbutton-iconic"
+ class="identity-popup-security-connection subviewbutton"
oncommand="gIdentityHandler.showSecuritySubView();">
- class="identity-popup-security-connection subviewbutton subviewbutton-iconic">
+ class="identity-popup-security-connection subviewbutton">
<image class="identity-popup-security-connection-icon toolbarbutton-icon"></image>
<hbox class="toolbarbutton-text" flex="1">
<label class="identity-popup-connection-not-secure"

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a3c5f7fce 100644
index 989e69245aeb1185125752db6b9c58e462d554e4..c297a47dc7685c2dd6ca9a9a832b204ca1da22e2 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -19,12 +19,13 @@ index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a
const kSpecialWidgetPfx = "customizableui-special-";
@@ -253,13 +254,14 @@ var CustomizableUIInternal = {
@@ -323,13 +324,14 @@ var CustomizableUIInternal = {
"spring",
"urlbar-container",
"spring",
- "save-to-pocket-button",
"downloads-button",
- "downloads-button",
+// "downloads-button",
AppConstants.MOZ_DEV_EDITION ? "developer-button" : null,
- "fxa-toolbar-menu-button",
+ "wrapper-sidebar-button",
@@ -36,7 +37,7 @@ index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a
this.registerArea(
CustomizableUI.AREA_NAVBAR,
{
@@ -288,10 +290,10 @@ var CustomizableUIInternal = {
@@ -363,10 +365,10 @@ var CustomizableUIInternal = {
{
type: CustomizableUI.TYPE_TOOLBAR,
defaultPlacements: [
@@ -48,9 +49,9 @@ index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a
+// "new-tab-button",
+// "alltabs-button",
],
verticalTabsDefaultPlacements: [],
defaultCollapsed: null,
},
@@ -331,6 +333,7 @@ var CustomizableUIInternal = {
@@ -429,6 +431,7 @@ var CustomizableUIInternal = {
CustomizableUI.AREA_NAVBAR,
CustomizableUI.AREA_BOOKMARKS,
CustomizableUI.AREA_TABSTRIP,
@@ -58,7 +59,7 @@ index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a
]);
if (AppConstants.platform != "macosx") {
toolbars.add(CustomizableUI.AREA_MENUBAR);
@@ -1033,6 +1036,9 @@ var CustomizableUIInternal = {
@@ -1144,6 +1147,9 @@ var CustomizableUIInternal = {
placements = gPlacements.get(area);
}
@@ -68,7 +69,7 @@ index 289c3df7dcd6fa6b35681ce61c1e920b6a2651d7..a31dc07c8b756e09f43cd5f81bad8d4a
// For toolbars that need it, mark as dirty.
let defaultPlacements = areaProperties.get("defaultPlacements");
if (
@@ -3289,6 +3295,9 @@ var CustomizableUIInternal = {
@@ -3521,6 +3527,9 @@ var CustomizableUIInternal = {
gSeenWidgets.add(widgetId);
}
}

View File

@@ -645,6 +645,7 @@ var gZenLooksAndFeel = {
colorElemParen.setAttribute('selected', 'true');
}
colorElemParen.addEventListener('click', () => {
Services.prefs.setBoolPref('zen.theme.color-prefs.use-workspace-colors', false);
Services.prefs.setStringPref('zen.theme.accent-color', color);
});
colorElemParen.appendChild(colorElem);
@@ -674,9 +675,11 @@ var gZenWorkspacesSettings = {
};
Services.prefs.addObserver('zen.workspaces.enabled', this);
Services.prefs.addObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
Services.prefs.addObserver('zen.glance.enabled', tabsUnloaderPrefListener); // We can use the same listener for both prefs
window.addEventListener('unload', () => {
Services.prefs.removeObserver('zen.workspaces.enabled', this);
Services.prefs.removeObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
Services.prefs.removeObserver('zen.glance.enabled', tabsUnloaderPrefListener);
});
},
@@ -965,11 +968,6 @@ var gZenCKSSettings = {
};
Preferences.addAll([
{
id: 'zen.theme.toolbar-themed',
type: 'bool',
default: true,
},
{
id: 'zen.sidebar.enabled',
type: 'bool',
@@ -1074,5 +1072,30 @@ Preferences.addAll([
id: 'zen.tabs.show-newtab-under',
type: 'bool',
default: false,
},
{
id: "zen.glance.activation-method",
type: "string",
default: "ctrl",
},
{
id: "zen.glance.enabled",
type: "bool",
default: true,
},
{
id: "zen.theme.color-prefs.use-workspace-colors",
type: "bool",
default: false,
},
{
id: "zen.view.compact.color-toolbar",
type: "bool",
default: true,
},
{
id: "zen.view.compact.color-sidebar",
type: "bool",
default: true,
}
]);

View File

@@ -18,9 +18,9 @@
<html:div id="zen-theme-builder-wrapper"></html:div>
<box class="indent">
<checkbox id="zenLooksAndFeelUseThemedToolbar"
data-l10n-id="zen-look-and-feel-themed-toolbar"
preference="zen.theme.toolbar-themed"/>
<checkbox id="zenLooksAndFeelUseWorkspaceColors"
data-l10n-id="zen-look-and-feel-use-workspace-colors"
preference="zen.theme.color-prefs.use-workspace-colors"/>
</box>
<hbox id="zenLooksAndFeelGradientPickerParent"></hbox>
@@ -236,6 +236,12 @@
<checkbox id="zenLooksAndFeelEnableToolbarFlashPopup"
data-l10n-id="zen-look-and-feel-compact-toolbar-flash-popup"
preference="zen.view.compact.toolbar-flash-popup"/>
<checkbox id="zenLooksAndFeelEnableThemedToolbarCompactMode"
data-l10n-id="zen-look-and-feel-compact-toolbar-themed"
preference="zen.view.compact.color-toolbar"/>
<checkbox id="zenLooksAndFeelEnableThemedSidebarCompactMode"
data-l10n-id="zen-look-and-feel-compact-sidebar-themed"
preference="zen.view.compact.color-sidebar"/>
</vbox>
</groupbox>
@@ -260,6 +266,34 @@
</hbox>
</groupbox>
<hbox id="zenGlanceCategory"
class="subcategory"
hidden="true"
data-category="paneZenLooks">
<html:h1 data-l10n-id="zen-glance-title"/>
</hbox>
<groupbox id="zenGlanceGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
<label><html:h2 data-l10n-id="zen-glance-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-glance-description" />
<checkbox id="zenLooksAndFeelGlanceEnabled"
data-l10n-id="zen-glance-enabled"
preference="zen.glance.enabled"/>
<hbox align="center">
<label id="zenGlanceTriggerLabel" data-l10n-id="zen-glance-trigger-label"/>
<menulist id="zenGlanceTrigger" preference="zen.glance.activation-method">
<menupopup>
<menuitem data-l10n-id="zen-glance-trigger-ctrl-click" value="ctrl"/>
<menuitem data-l10n-id="zen-glance-trigger-alt-click" value="alt"/>
<menuitem data-l10n-id="zen-glance-trigger-shift-click" value="shift"/>
<menuitem data-l10n-id="zen-glance-trigger-meta-click" value="meta"/>
<menuitem data-l10n-id="zen-glance-trigger-mantain-click" value="mantain" disabled="true"/>
</menupopup>
</menulist>
</hbox>
</groupbox>
<hbox id="zenSplitViewCategory"
class="subcategory"
hidden="true"

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index c68a32794996348d95f3b1ee363be2eec587065e..3a163c75ac10a204754648dfd1332c79895799c7 100644
index 4a124003976684e014435854aef69ce29da541d2..61ce44751c36eea3e5ae2ddcc62e42c01459629b 100644
--- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js
@@ -521,7 +521,7 @@ var SidebarController = {
@@ -578,7 +578,7 @@ var SidebarController = {
*/
setPosition() {
// First reset all ordinals to match DOM ordering.
@@ -11,12 +11,11 @@ index c68a32794996348d95f3b1ee363be2eec587065e..3a163c75ac10a204754648dfd1332c79
[...browser.children].forEach((node, i) => {
node.style.order = i + 1;
});
@@ -535,9 +535,11 @@ var SidebarController = {
@@ -592,9 +592,10 @@ var SidebarController = {
let boxOrdinal = this._box.style.order;
this._box.style.order = appcontent.style.order;
this._box.style.order = tabbox.style.order;
- appcontent.style.order = boxOrdinal;
+ // appcontent.style.order = boxOrdinal;
- tabbox.style.order = boxOrdinal;
// the launcher should be on the right of the sidebar-box
- sidebarContainer.style.order = parseInt(this._box.style.order) + 1;
+ this._box.style.order = browser.children.length + 2;
@@ -25,7 +24,7 @@ index c68a32794996348d95f3b1ee363be2eec587065e..3a163c75ac10a204754648dfd1332c79
// Indicate we've switched ordering to the box
this._box.setAttribute("positionend", true);
sidebarMain.setAttribute("positionend", true);
@@ -546,6 +548,9 @@ var SidebarController = {
@@ -603,6 +604,9 @@ var SidebarController = {
this._box.removeAttribute("positionend");
sidebarMain.removeAttribute("positionend");
sidebarContainer.removeAttribute("positionend");

View File

@@ -1,13 +0,0 @@
diff --git a/browser/components/tabbrowser/content/tab-hover-preview.mjs b/browser/components/tabbrowser/content/tab-hover-preview.mjs
index b07dba3e060dd730e603997b2c374f218a1eb591..412d35a263d1e6a789927206a506c184a5ac0d46 100644
--- a/browser/components/tabbrowser/content/tab-hover-preview.mjs
+++ b/browser/components/tabbrowser/content/tab-hover-preview.mjs
@@ -7,7 +7,7 @@ var { XPCOMUtils } = ChromeUtils.importESModule(
);
const POPUP_OPTIONS = {
- position: "bottomleft topleft",
+ position: "topright topleft",
x: 0,
y: -2,
};

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e5741caf6 100644
index 14de79b543cf07b04d06ef5a3f94d9aa988ea39a..7468ca5d73c343579d591e0dfbecf1bd9a102248 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -456,11 +456,26 @@
@@ -462,11 +462,26 @@
return duplicateTabs;
},
@@ -31,7 +31,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
}
return i;
},
@@ -1340,6 +1355,7 @@
@@ -1346,6 +1361,7 @@
if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed();
@@ -39,7 +39,39 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -2705,6 +2721,11 @@
@@ -2270,6 +2286,13 @@
b.setAttribute("transparent", "true");
}
+ if (this.zenGlanceBrowser) {
+ b.setAttribute("zen-glance", "true");
+ gZenGlanceManager.browser.appendChild(b);
+ this.zenGlanceBrowser = undefined;
+ return b;
+ }
+
let stack = document.createXULElement("stack");
stack.className = "browserStack";
stack.appendChild(b);
@@ -2431,7 +2454,7 @@
let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID();
- panel.id = uniqueId;
+ if (!panel.id) panel.id = uniqueId;
aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary.
@@ -2491,7 +2514,7 @@
// hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) {
this.tabs[0].linkedBrowser.browsingContext.hasSiblings = true;
- this.tabs[1].linkedBrowser.browsingContext.hasSiblings = true;
+ if (this.tabs[1].linkedBrowser.browsingContext) this.tabs[1].linkedBrowser.browsingContext.hasSiblings = true;
} else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
}
@@ -2711,6 +2734,11 @@
);
}
@@ -51,7 +83,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
if (!UserInteraction.running("browser.tabs.opening", window)) {
UserInteraction.start("browser.tabs.opening", "initting", window);
}
@@ -2773,6 +2794,9 @@
@@ -2780,6 +2808,9 @@
noInitialLabel,
skipBackgroundNotify,
});
@@ -61,7 +93,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
if (insertTab) {
// insert the tab into the tab container in the correct position
this._insertTabAtIndex(t, {
@@ -3262,6 +3286,14 @@
@@ -3291,6 +3322,14 @@
) {
tabWasReused = true;
tab = this.selectedTab;
@@ -76,7 +108,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
if (!tabData.pinned) {
this.unpinTab(tab);
} else {
@@ -3275,6 +3307,9 @@
@@ -3304,6 +3343,9 @@
restoreTabsLazily && !select && !tabData.pinned;
let url = "about:blank";
@@ -86,7 +118,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
if (tabData.entries?.length) {
let activeIndex = (tabData.index || tabData.entries.length) - 1;
// Ensure the index is in bounds.
@@ -3311,6 +3346,12 @@
@@ -3340,6 +3382,12 @@
preferredRemoteType,
});
@@ -99,7 +131,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
if (select) {
tabToSelect = tab;
}
@@ -3345,7 +3386,7 @@
@@ -3374,7 +3422,7 @@
this.tabContainer._invalidateCachedTabs();
}
}
@@ -108,7 +140,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
tab.initialize();
}
@@ -4152,6 +4193,13 @@
@@ -4148,6 +4196,13 @@
TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
}
@@ -122,15 +154,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
// Handle requests for synchronously removing an already
// asynchronously closing tab.
if (!animate && aTab.closing) {
@@ -4198,6 +4246,7 @@
isLastTab ||
aTab.pinned ||
aTab.hidden ||
+ true ||
this._removingTabs.size >
3 /* don't want lots of concurrent animations */ ||
!aTab.hasAttribute(
@@ -5131,10 +5180,10 @@
@@ -5123,10 +5178,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
},
@@ -143,7 +167,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
aTab.selected ||
aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -7050,6 +7099,7 @@
@@ -7042,6 +7097,7 @@
aWebProgress.isTopLevel
) {
this.mTab.setAttribute("busy", "true");
@@ -151,7 +175,7 @@ index c89ae2cbb978d6218bd56a059c5ca1e371231607..58c05bd5c935f73e154e84f66b39f58e
gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected;
gBrowser.syncThrobberAnimations(this.mTab);
@@ -7870,7 +7920,7 @@ var TabContextMenu = {
@@ -7874,7 +7930,7 @@ var TabContextMenu = {
);
contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !multiselectionContext;

View File

@@ -1,8 +1,17 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a85488137940 100644
index f3a2f226a9056c5a75023281fdeb704cec49b4a6..6864f4011676e2c114bacc4b55adca470b97b2a8 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -840,7 +840,7 @@
@@ -894,7 +894,7 @@
let postTransitionCleanup = () => {
tab.removeAttribute("tabdrop-samewindow");
- this._finishAnimateTabMove();
+ this._finishAnimateTabMove(true);
if (dropIndex !== false) {
gBrowser.moveTabTo(tab, dropIndex);
if (incrementDropIndex) {
@@ -904,7 +904,7 @@
gBrowser.syncThrobberAnimations(tab);
};
@@ -11,7 +20,7 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -1411,7 +1411,7 @@
@@ -1480,7 +1480,7 @@
let rect = ele => {
return window.windowUtils.getBoundsWithoutFlushing(ele);
};
@@ -20,11 +29,11 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
if (tab && rect(tab).width <= this._tabClipWidth) {
this.setAttribute("closebuttons", "activetab");
} else {
@@ -1430,10 +1430,12 @@
@@ -1499,10 +1499,12 @@
_handleTabSelect(aInstant) {
let selectedTab = this.selectedItem;
- if (this.hasAttribute("overflow")) {
- if (this.overflowing) {
- this.arrowScrollbox.ensureElementIsVisible(selectedTab, aInstant);
- }
+ this.arrowScrollbox.ensureElementIsVisible(selectedTab, aInstant);
@@ -36,7 +45,7 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
selectedTab._notselectedsinceload = false;
}
@@ -1477,7 +1479,7 @@
@@ -1550,7 +1552,7 @@
if (isEndTab && !this._hasTabTempMaxWidth) {
return;
}
@@ -45,7 +54,7 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
// Force tabs to stay the same width, unless we're closing the last tab,
// which case we need to let them expand just enough so that the overall
// tabbar width is the same.
@@ -1492,7 +1494,7 @@
@@ -1565,7 +1567,7 @@
let tabsToReset = [];
for (let i = numPinned; i < tabs.length; i++) {
let tab = tabs[i];
@@ -54,10 +63,10 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
if (!isEndTab) {
// keep tabs the same width
tab.style.transition = "none";
@@ -1558,9 +1560,9 @@
@@ -1630,9 +1632,9 @@
let verticalTabsContainer = document.getElementById(
"vertical-pinned-tabs-container"
);
let newTabButton = document.getElementById("newtab-button-container");
- let numPinned = gBrowser._numPinnedTabs;
+ let numPinned = gBrowser._numVisiblePinTabs;
@@ -66,25 +75,16 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
let tabs = this._getVisibleTabs();
for (let i = 0; i < numPinned; i++) {
tabs[i].style.marginInlineStart = "";
@@ -1568,7 +1570,7 @@
}
}
- newTabButton.toggleAttribute("showborder", gBrowser._numPinnedTabs !== 0);
+ newTabButton.toggleAttribute("showborder", gBrowser._numVisiblePinTabs !== 0);
this.style.removeProperty("--tab-overflow-pinned-tabs-width");
}
@@ -1589,7 +1591,7 @@
@@ -1660,7 +1662,7 @@
_positionPinnedTabs() {
let tabs = this._getVisibleTabs();
- let numPinned = gBrowser._numPinnedTabs;
+ let numPinned = gBrowser._numVisiblePinTabs;
let absPositionHorizontalTabs =
this.hasAttribute("overflow") &&
tabs.length > numPinned &&
@@ -1672,7 +1674,7 @@
this.overflowing && tabs.length > numPinned && numPinned > 0;
@@ -1934,7 +1936,7 @@
}
let pinned = draggedTab.pinned;
@@ -93,7 +93,18 @@ index 137f1a3854f10aca0d0e3233a82c1c18fbdc2823..419e0ad674b76454e6e3e1ed4ae1a854
let tabs = this._getVisibleTabs().slice(
pinned ? 0 : numPinned,
pinned ? numPinned : undefined
@@ -1949,9 +1951,9 @@
@@ -2059,8 +2061,8 @@
}
}
- _finishAnimateTabMove() {
- if (!this.hasAttribute("movingtab")) {
+ _finishAnimateTabMove(always = false) {
+ if (!this.hasAttribute("movingtab") && !always) {
return;
}
@@ -2218,9 +2220,9 @@
function newIndex(aTab, index) {
// Don't allow mixing pinned and unpinned tabs.
if (aTab.pinned) {

View File

@@ -1,21 +1,8 @@
diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs
index 7cfea4b705a1338b1eb5c4f255808aeac4bdb819..cf7dc720a3bd2b14535d57262ad2297f9478eddc 100644
index f738f7f1e37d20d9d9158f052572334714475107..f4b0e9a7077076f2fbe8ac17fa6aadf586c6b37c 100644
--- a/browser/themes/BuiltInThemeConfig.sys.mjs
+++ b/browser/themes/BuiltInThemeConfig.sys.mjs
@@ -22,24 +22,17 @@ export const BuiltInThemeConfig = new Map([
[
"firefox-compact-light@mozilla.org",
{
- version: "1.2",
+ version: "1.3",
path: "resource://builtin-themes/light/",
},
],
[
"firefox-compact-dark@mozilla.org",
{
- version: "1.2",
+ version: "1.3",
@@ -33,13 +33,6 @@ export const BuiltInThemeConfig = new Map([
path: "resource://builtin-themes/dark/",
},
],

View File

@@ -11,15 +11,6 @@ index c2d5dd7a18895ae8b4afbf386f122e7899c48cda..377d904bbf5adc92bf7cb0aa4c4c6417
);
let activeBuiltInTheme = this.builtInThemeMap.get(activeThemeID);
@@ -82,7 +82,7 @@ class _BuiltInThemes {
lazy.AddonManager.maybeInstallBuiltinAddon(
activeThemeID,
activeBuiltInTheme.version,
- `resource://builtin-themes/${activeBuiltInTheme.path}`
+ `${activeBuiltInTheme.path}`
);
}
}
@@ -166,7 +166,7 @@ class _BuiltInThemes {
async _uninstallExpiredThemes() {
const activeThemeID = Services.prefs.getStringPref(

View File

@@ -10,9 +10,8 @@ index bfebde683d00b0acf26509139a0f662029d37c72..976b553f49e40b7ed02743d79ccc102f
+ "name": "Zen Dark",
"description": "A theme with a dark color scheme.",
- "author": "Mozilla",
- "version": "1.2",
+ "author": "Zen",
+ "version": "1.3",
"version": "1.3.2",
"icons": { "32": "icon.svg" },

View File

@@ -10,9 +10,8 @@ index d490f8f08d203ded55b65fe1a19be105b61ee6c0..eb4349e939b979b3a4d7c525ee0c0f9a
+ "name": "Zen Light",
"description": "A theme with a light color scheme.",
- "author": "Mozilla",
- "version": "1.2",
+ "author": "Zen",
+ "version": "1.3",
"version": "1.3",
"icons": { "32": "icon.svg" },

View File

@@ -1,31 +0,0 @@
diff --git a/browser/themes/shared/browser-custom-colors.css b/browser/themes/shared/browser-custom-colors.css
index 23187312740d440b3cd4b376a06cb2ab2e885604..ac9aafc0ceed04364ae5b468cf7d2b2843aa7fe5 100644
--- a/browser/themes/shared/browser-custom-colors.css
+++ b/browser/themes/shared/browser-custom-colors.css
@@ -6,7 +6,7 @@
@media not (prefers-contrast) {
:root:not([lwtheme]) {
- --button-primary-bgcolor: light-dark(rgb(0, 97, 224), rgb(0, 221, 255));
+ --button-primary-bgcolor: light-dark(#000, #fff);
--button-primary-hover-bgcolor: light-dark(rgb(2, 80, 187), rgb(128, 235, 255));
--button-primary-active-bgcolor: light-dark(rgb(5, 62, 148), rgb(170, 242, 255));
--button-primary-color: light-dark(rgb(251, 251, 254), rgb(43, 42, 51));
@@ -15,7 +15,7 @@
rgba(0, 0, 0, .33)
);
--button-hover-bgcolor: light-dark(
- rgba(207, 207, 216, .66),
+ rgba(228, 228, 235, 0.66),
rgba(207, 207, 216, .20)
);
--button-active-bgcolor: light-dark(
@@ -49,7 +49,7 @@
--tab-icon-overlay-fill: light-dark(rgb(91, 91, 102), rgb(251, 251, 254));
--tabs-navbar-separator-style: none;
- --toolbox-non-lwt-bgcolor: light-dark(rgb(240, 240, 244), rgb(28, 27, 34));
+ --toolbox-non-lwt-bgcolor: light-dark(rgb(210, 210, 213), rgb(28, 27, 34));
--toolbox-non-lwt-textcolor: light-dark(rgb(21, 20, 26), rgb(251, 251, 254));
--toolbox-non-lwt-bgcolor-inactive: var(--toolbox-non-lwt-bgcolor);
--toolbox-non-lwt-textcolor-inactive: var(--toolbox-non-lwt-textcolor);

View File

@@ -2,14 +2,6 @@ diff --git a/browser/themes/shared/browser-shared.css b/browser/themes/shared/br
index f2171eb033a1143870f4708c63f565fabb535c4b..4280bc4b0f7cdbd94179fa2111f8001a331ea42b 100644
--- a/browser/themes/shared/browser-shared.css
+++ b/browser/themes/shared/browser-shared.css
@@ -179,7 +179,6 @@ body {
appearance: none;
/* Toolbar / content area border */
- border-bottom: 0.01px solid var(--chrome-content-separator-color);
background-color: var(--toolbox-non-lwt-bgcolor);
color: var(--toolbox-non-lwt-textcolor);
@@ -188,7 +187,6 @@ body {
transition: background-color var(--inactive-window-transition);

View File

@@ -3,9 +3,9 @@ index 9f7331f2f00a8b0de6ce28a7029358a86eeb8873..2dc56a8455df9009bd1f524b377b8fdf
--- a/browser/themes/shared/tabbrowser/tabs.css
+++ b/browser/themes/shared/tabbrowser/tabs.css
@@ -15,7 +15,7 @@
--tab-border-radius: 4px;
--tab-shadow-max-size: 6px;
--tab-block-margin: 4px;
--tab-icon-end-margin: 5.5px;
--tab-icon-overlay-fill: light-dark(black, white);
--tab-icon-overlay-stroke: light-dark(white, black);
- --tab-loading-fill: #0A84FF;
+ --tab-loading-fill: var(--zen-primary-color);
--tab-hover-background-color: color-mix(in srgb, currentColor 11%, transparent);
@@ -24,8 +24,8 @@ index 9f7331f2f00a8b0de6ce28a7029358a86eeb8873..2dc56a8455df9009bd1f524b377b8fdf
@@ -952,7 +951,7 @@ sidebar-main[expanded] > #vertical-tabs > #tabbrowser-tabs[orient="vertical"] >
toolbarbutton:not(#firefox-view-button),
toolbarpaletteitem:not(#wrapper-firefox-view-button)
) + #tabbrowser-tabs {
- border-inline-start: 1px solid color-mix(in srgb, currentColor 25%, transparent);
) ~ #tabbrowser-tabs {
- border-inline-start: var(--tabstrip-inner-border);
+ border-inline-start: transparent;
padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px);
margin-inline-start: 2px;
@@ -35,6 +35,6 @@ index 9f7331f2f00a8b0de6ce28a7029358a86eeb8873..2dc56a8455df9009bd1f524b377b8fdf
}
-#tabbrowser-tabs[hasadjacentnewtabbutton]:not([overflow]) ~ #new-tab-button,
#tabbrowser-tabs[orient="vertical"] > #tabbrowser-arrowscrollbox > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button,
#tabbrowser-tabs[overflow] > #tabbrowser-arrowscrollbox > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button,
#tabbrowser-tabs:not([hasadjacentnewtabbutton]) > #tabbrowser-arrowscrollbox > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button,
#tabbrowser-tabs[orient="horizontal"] > #vertical-tabs-newtab-button,
#tabbrowser-tabs[orient="vertical"]:not([overflow]) > #vertical-tabs-newtab-button,
#tabbrowser-arrowscrollbox[overflowing] > #tabbrowser-arrowscrollbox-periphery > #tabs-newtab-button,

View File

@@ -44,6 +44,7 @@
#stop-button,
.close-icon,
#zen-sidebar-web-panel-close,
#zen-glance-sidebar-close,
.zen-theme-picker-custom-list-item-remove {
list-style-image: url('close.svg') !important;
}
@@ -263,6 +264,7 @@
#restore-button,
#fullscreen-button,
#zen-glance-sidebar-open,
#appMenu-fullscreen-button2 {
list-style-image: url('fullscreen.svg') !important;
}

View File

@@ -1,25 +0,0 @@
diff --git a/toolkit/modules/ActorManagerParent.sys.mjs b/toolkit/modules/ActorManagerParent.sys.mjs
index 71409e58271802fc506999712519df63eff3b1a6..684c9da0139db1dc0962fbb50304ca4f013950ca 100644
--- a/toolkit/modules/ActorManagerParent.sys.mjs
+++ b/toolkit/modules/ActorManagerParent.sys.mjs
@@ -666,6 +666,20 @@ if (!Services.prefs.getBoolPref("browser.pagedata.enabled", false)) {
};
}
+JSWINDOWACTORS.ZenThemeMarketplace = {
+ parent: {
+ esModuleURI: "chrome://browser/content/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs",
+ },
+ child: {
+ esModuleURI: "chrome://browser/content/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs",
+ events: {
+ DOMContentLoaded: {},
+ },
+ },
+ matches: ["https://*.zen-browser.app/*", "about:preferences"],
+ allFrames: true,
+};
+
if (AppConstants.platform != "android") {
// Note that GeckoView has another implementation in mobile/android/actors.
JSWINDOWACTORS.Select = {

View File

@@ -1,5 +1,5 @@
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
index 011eee093dcf77c3c8ad3cd20188b61457d8dc09..d6ffe47cf4d1dfe7a49d7e5f5d84c162b8589cc7 100644
index 06281a55f43ddff4f4d4a09ba05e9a830a221415..269728dccdd8a286b563a5d20da5280b7b3b1639 100644
--- a/toolkit/moz.configure
+++ b/toolkit/moz.configure
@@ -81,6 +81,9 @@ option(
@@ -25,3 +25,12 @@ index 011eee093dcf77c3c8ad3cd20188b61457d8dc09..d6ffe47cf4d1dfe7a49d7e5f5d84c162
return True
@@ -2036,7 +2039,7 @@ set_define("A11Y_LOG", True, when=a11y_log)
# ==============================================================
@depends(milestone)
def require_signing(milestone):
- return milestone.is_release_or_beta and not milestone.is_esr
+ return False
option(

View File

@@ -1,8 +1,8 @@
diff --git a/toolkit/profile/nsToolkitProfileService.cpp b/toolkit/profile/nsToolkitProfileService.cpp
index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc56339484 100644
index 0587b214ddcf4b12877ca3698ca7d4308b2f0af3..3846515a4fa7b849233de6026f55152478c04f03 100644
--- a/toolkit/profile/nsToolkitProfileService.cpp
+++ b/toolkit/profile/nsToolkitProfileService.cpp
@@ -234,7 +234,7 @@ void RemoveProfileFiles(nsIToolkitProfile* aProfile, bool aInBackground) {
@@ -229,7 +229,7 @@ void RemoveProfileFiles(nsIToolkitProfile* aProfile, bool aInBackground) {
}
nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
@@ -11,7 +11,7 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
const nsACString& aStoreID = VoidCString(),
bool aShowProfileSelector = false)
: mName(aName),
@@ -244,7 +244,8 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
@@ -239,7 +239,8 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
mShowProfileSelector(aShowProfileSelector),
mLock(nullptr),
mIndex(0),
@@ -21,7 +21,7 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
NS_ASSERTION(aRootDir, "No file!");
RefPtr<nsToolkitProfile> prev =
@@ -259,6 +260,10 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
@@ -254,6 +255,10 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
// If this profile isn't in the database already add it.
if (!aFromDB) {
nsINIParser* db = &nsToolkitProfileService::gService->mProfileDB;
@@ -32,7 +32,7 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
db->SetString(mSection.get(), "Name", mName.get());
bool isRelative = false;
@@ -268,6 +273,7 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
@@ -263,6 +268,7 @@ nsToolkitProfile::nsToolkitProfile(const nsACString& aName, nsIFile* aRootDir,
db->SetString(mSection.get(), "IsRelative", isRelative ? "1" : "0");
db->SetString(mSection.get(), "Path", descriptor.get());
@@ -40,7 +40,7 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
if (!mStoreID.IsVoid()) {
db->SetString(mSection.get(), "StoreID",
PromiseFlatCString(mStoreID).get());
@@ -466,6 +472,8 @@ nsToolkitProfile::SetShowProfileSelector(bool aShowProfileSelector) {
@@ -462,6 +468,8 @@ nsToolkitProfile::SetShowProfileSelector(bool aShowProfileSelector) {
#endif
}
@@ -49,14 +49,13 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
nsresult nsToolkitProfile::RemoveInternal(bool aRemoveFiles,
bool aInBackground) {
NS_ASSERTION(nsToolkitProfileService::gService, "Whoa, my service is gone.");
@@ -1158,8 +1166,15 @@ nsresult nsToolkitProfileService::Init() {
@@ -1145,8 +1153,14 @@ nsresult nsToolkitProfileService::Init() {
}
}
- currentProfile = new nsToolkitProfile(name, rootDir, localDir, true,
- storeID, showProfileSelector);
+ nsAutoCString zenProfileAvatar;
+
+ rv = mProfileDB.GetString(profileID.get(), "ZenAvatarPath", zenProfileAvatar);
+ if (NS_FAILED(rv)) {
+ NS_ERROR("Malformed profiles.ini: ZenAvatarPath= not found");
@@ -67,7 +66,7 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
// If a user has modified the ini file path it may make for a valid profile
// path but not match what we would have serialised and so may not match
@@ -1384,7 +1399,7 @@ nsresult nsToolkitProfileService::CreateDefaultProfile(
@@ -1375,7 +1389,7 @@ nsresult nsToolkitProfileService::CreateDefaultProfile(
if (mUseDevEditionProfile) {
name.AssignLiteral(DEV_EDITION_NAME);
} else if (mUseDedicatedProfile) {
@@ -76,12 +75,12 @@ index 6e40f51cfc6e76fbd63d87fe7a416481fe9bb2f6..3bc78e3077264387415a06a52a3a8fbc
} else {
name.AssignLiteral(DEFAULT_NAME);
}
@@ -2180,7 +2195,7 @@ nsToolkitProfileService::CreateProfile(nsIFile* aRootDir,
@@ -2185,7 +2199,7 @@ nsresult nsToolkitProfileService::CreateProfile(nsIFile* aRootDir,
rv = CreateTimesInternal(rootDir);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIToolkitProfile> profile =
- new nsToolkitProfile(aName, rootDir, localDir, false);
+ new nsToolkitProfile(aName, rootDir, localDir, false, ""_ns);
- profile = new nsToolkitProfile(aName, rootDir, localDir, false);
+ profile = new nsToolkitProfile(aName, rootDir, localDir, false, ""_ns);
if (aName.Equals(DEV_EDITION_NAME)) {
mDevEditionDefault = profile;

View File

@@ -1,19 +1,14 @@
diff --git a/toolkit/themes/shared/menulist-shared.css b/toolkit/themes/shared/menulist-shared.css
index fa7e68c7b71b28c6dc1b2f67a9868f9ad4090034..9d082381e2d491d63647f8047a748354918686fe 100644
index 5dd5549674570170a694afbd9ea4526e52e3192a..187fcb57183df6a0ab3701ab79c46d86c5e984b3 100644
--- a/toolkit/themes/shared/menulist-shared.css
+++ b/toolkit/themes/shared/menulist-shared.css
@@ -14,12 +14,13 @@
@@ -14,7 +14,8 @@
:host(:not([native])) {
appearance: none;
- background-color: var(--button-bgcolor, ButtonFace);
- background-color: var(--button-background-color);
+ background-color: var(--zen-colors-tertiary, ButtonFace);
color: var(--button-color, ButtonText);
+ border: 1px solid var(--input-border-color, ThreeDShadow);
color: var(--button-text-color);
border-radius: 4px;
padding-block: 4px;
padding-inline: 12px 8px;
margin: 5px 2px 3px;
+ border: 1px solid var(--input-border-color, ThreeDShadow);
}
:host(:not([native])[size="medium"]) {

View File

@@ -5,7 +5,7 @@
"binaryName": "zen",
"version": {
"product": "firefox",
"version": "131.0.3"
"version": "132.0"
},
"buildOptions": {
"generateBranding": true
@@ -18,7 +18,7 @@
"brandShortName": "Zen Browser",
"brandFullName": "Zen Browser",
"release": {
"displayVersion": "1.0.1-a.14",
"displayVersion": "1.0.1-a.15",
"github": {
"repo": "zen-browser/desktop"
},
@@ -38,7 +38,7 @@
"brandShortName": "Zen Twilight",
"brandFullName": "Zen Twilight",
"release": {
"displayVersion": "1.0.1-t.14",
"displayVersion": "1.0.1-t.15",
"github": {
"repo": "zen-browser/desktop"
},