mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
Refactor watermark handling and improve tab switching logic for enhanced user experience
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
{
|
||||
const lazy = {};
|
||||
var ZenStartup = {
|
||||
init() {
|
||||
this.openWatermark();
|
||||
@@ -49,18 +48,30 @@
|
||||
if (!Services.prefs.getBoolPref('zen.watermark.enabled', false)) {
|
||||
return;
|
||||
}
|
||||
const watermark = window.MozXULElement.parseXULToFragment(`
|
||||
<html:div id="zen-watermark">
|
||||
<image src="chrome://branding/content/about-logo.png" />
|
||||
</html:div>
|
||||
`);
|
||||
document.body.appendChild(watermark);
|
||||
for (let elem of document.querySelectorAll('#browser > *, #urlbar')) {
|
||||
elem.style.opacity = 0;
|
||||
}
|
||||
},
|
||||
|
||||
closeWatermark() {
|
||||
const watermark = document.getElementById('zen-watermark');
|
||||
if (watermark) {
|
||||
watermark.setAttribute('hidden', 'true');
|
||||
document.documentElement.removeAttribute('zen-before-loaded');
|
||||
if (Services.prefs.getBoolPref('zen.watermark.enabled', false)) {
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
'#browser > *, #urlbar',
|
||||
{
|
||||
opacity: [0, 1],
|
||||
},
|
||||
{
|
||||
delay: 0.6,
|
||||
easing: 'ease-in-out',
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
for (let elem of document.querySelectorAll('#browser > *, #urlbar')) {
|
||||
elem.style.removeProperty('opacity');
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||
index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..26a5b896de61ce73b03d1b378487d0e84c6a0a5b 100644
|
||||
index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..56ed0bffb0ec0863c18ef881acb4efcc590e4a96 100644
|
||||
--- a/browser/base/content/browser.js
|
||||
+++ b/browser/base/content/browser.js
|
||||
@@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||
@@ -42,3 +42,20 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..26a5b896de61ce73b03d1b378487d0e8
|
||||
},
|
||||
|
||||
openURIInFrame: function browser_openURIInFrame(
|
||||
@@ -6351,7 +6361,7 @@ function switchToTabHavingURI(
|
||||
ignoreQueryString || replaceQueryString,
|
||||
ignoreFragmentWhenComparing
|
||||
);
|
||||
- let browsers = aWindow.gBrowser.browsers;
|
||||
+ let browsers = aWindow.ZenWorkspaces.allUsedBrowsers;
|
||||
for (let i = 0; i < browsers.length; i++) {
|
||||
let browser = browsers[i];
|
||||
let browserCompare = cleanURL(
|
||||
@@ -6364,6 +6374,7 @@ function switchToTabHavingURI(
|
||||
continue;
|
||||
}
|
||||
if (requestedCompare == browserCompare) {
|
||||
+ aWindow.ZenWorkspaces.switchIfNeeded(browser);
|
||||
// If adoptIntoActiveWindow is set, and this is a cross-window switch,
|
||||
// adopt the tab into the current window, after the active tab.
|
||||
let doAdopt =
|
||||
|
@@ -1,8 +1,16 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index 891c067d6ad718061c410c04743bed25744504b5..b7ded9691225068b23e4d6a5113242d0c0f5f842 100644
|
||||
index 891c067d6ad718061c410c04743bed25744504b5..135c8515bbcb534c3f900e7ba1ee4d3b9fe17436 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -99,6 +99,8 @@
|
||||
@@ -25,6 +25,7 @@
|
||||
sizemode="normal"
|
||||
retargetdocumentfocus="urlbar-input"
|
||||
scrolling="false"
|
||||
+ zen-before-loaded="true"
|
||||
persist="screenX screenY width height sizemode"
|
||||
data-l10n-sync="true">
|
||||
<head>
|
||||
@@ -99,6 +100,8 @@
|
||||
|
||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||
|
||||
@@ -11,7 +19,7 @@ index 891c067d6ad718061c410c04743bed25744504b5..b7ded9691225068b23e4d6a5113242d0
|
||||
# All JS files which are needed by browser.xhtml and other top level windows to
|
||||
# support MacOS specific features *must* go into the global-scripts.inc file so
|
||||
# that they can be shared with macWindow.inc.xhtml.
|
||||
@@ -143,6 +145,7 @@
|
||||
@@ -143,6 +146,7 @@
|
||||
window.addEventListener("DOMContentLoaded",
|
||||
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
|
||||
</script>
|
||||
@@ -19,7 +27,7 @@ index 891c067d6ad718061c410c04743bed25744504b5..b7ded9691225068b23e4d6a5113242d0
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -164,9 +167,13 @@
|
||||
@@ -164,9 +168,13 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
|
@@ -26,6 +26,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
:root[zen-before-loaded='true'] #browser > *,
|
||||
:root[zen-before-loaded='true'] #urlbar {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
|
||||
#browser {
|
||||
width: 100%;
|
||||
background: var(--zen-main-browser-background) !important;
|
||||
|
@@ -318,7 +318,6 @@
|
||||
|
||||
@media (-moz-bool-pref: 'zen.view.compact.color-toolbar') {
|
||||
background-attachment: fixed;
|
||||
backdrop-filter: blur(5px);
|
||||
background: var(--zen-main-browser-background-toolbar);
|
||||
background-size: 100% 2000px;
|
||||
border-bottom: 1px solid var(--zen-colors-border);
|
||||
|
@@ -11,35 +11,6 @@
|
||||
right: 1.5%;
|
||||
}
|
||||
|
||||
/* Watermark */
|
||||
|
||||
#zen-watermark {
|
||||
--zen-themed-toolbar-bg-transparency: 1 !important;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--zen-main-browser-background);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
#zen-watermark image {
|
||||
opacity: 0.2;
|
||||
filter: grayscale(100%);
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#zen-watermark[hidden='true'] {
|
||||
transition: 0.6s;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#zen-workspaces-button .zen-workspace-sidebar-name {
|
||||
margin-left: 10px;
|
||||
display: none;
|
||||
|
@@ -107,7 +107,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
|
||||
selectEmptyTab() {
|
||||
console.log(new Error().stack);
|
||||
if (this._emptyTab && Services.prefs.getBoolPref('zen.urlbar.replace-newtab')) {
|
||||
gBrowser.selectedTab = this._emptyTab;
|
||||
return this._emptyTab;
|
||||
@@ -2227,6 +2226,13 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
return this._allStoredTabs;
|
||||
}
|
||||
|
||||
get allUsedBrowsers() {
|
||||
if (!this._hasInitializedTabsStrip) {
|
||||
return gBrowser.browsers;
|
||||
}
|
||||
return Array.from(gBrowser.tabpanels.querySelectorAll('browser'));
|
||||
}
|
||||
|
||||
get pinnedTabCount() {
|
||||
return this.pinnedTabsContainer.children.length - 1;
|
||||
}
|
||||
@@ -2245,4 +2251,12 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
this.moveTabToWorkspace(tab, this.activeWorkspace);
|
||||
}
|
||||
}
|
||||
|
||||
switchIfNeeded(browser) {
|
||||
const tab = gBrowser.getTabForBrowser(browser);
|
||||
const workspaceId = tab.getAttribute('zen-workspace-id');
|
||||
if (!tab.hasAttribute('zen-essential') && workspaceId !== this.activeWorkspace) {
|
||||
this.changeWorkspace({ uuid: workspaceId });
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
Reference in New Issue
Block a user