diff --git a/locales/en-US/browser/browser/preferences/zen-preferences.ftl b/locales/en-US/browser/browser/preferences/zen-preferences.ftl
index 62f8eebd9..473bfb740 100644
--- a/locales/en-US/browser/browser/preferences/zen-preferences.ftl
+++ b/locales/en-US/browser/browser/preferences/zen-preferences.ftl
@@ -48,6 +48,11 @@ zen-look-and-feel-compact-view-top-toolbar =
zen-look-and-feel-compact-toolbar-flash-popup =
.label = Briefly make the toolbar popup when switching or opening new tabs in compact mode
+zen-look-and-feel-window-drag-header = Window dragging
+zen-look-and-feel-window-drag-description = Move the window by dragging empty space at the top of websites, just like the titlebar.
+zen-window-drag-enabled =
+ .label = Allow dragging the window from web pages
+
pane-zen-tabs-title = Tab Management
category-zen-workspaces =
.tooltiptext = { pane-zen-tabs-title }
diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js
index 73d5663cf..83f2fc3c4 100644
--- a/src/browser/components/preferences/zen-settings.js
+++ b/src/browser/components/preferences/zen-settings.js
@@ -1184,6 +1184,11 @@ Preferences.addAll([
type: "bool",
default: true,
},
+ {
+ id: "zen.view.drag-window-from-content",
+ type: "bool",
+ default: true,
+ },
{
id: "zen.urlbar.behavior",
type: "string",
diff --git a/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml b/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml
index 08b2c2ef7..8f004a3b5 100644
--- a/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml
+++ b/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml
@@ -61,6 +61,15 @@
data-l10n-id="zen-look-and-feel-compact-toolbar-flash-popup"
preference="zen.view.compact.toolbar-flash-popup"/>
+
+
+
+
+
+
+
animation.finished)
+ ).then(() => {
+ if (!this.element.hasAttribute("zen-hiding")) {
+ return;
+ }
+ this.element.removeAttribute("zen-hiding");
+ if (this.shouldBeVisible) {
+ return;
+ }
+ this.element.hidden = true;
+ this.manager.onCardVisibilityChanged();
+ });
}
// Mirrors the original bar behavior: hide instantly when the card's own
diff --git a/src/zen/media/zen-media-controls.css b/src/zen/media/zen-media-controls.css
index 045afa8f9..2302155a2 100644
--- a/src/zen/media/zen-media-controls.css
+++ b/src/zen/media/zen-media-controls.css
@@ -89,7 +89,7 @@
animation: zen-back-and-forth-text 10s infinite ease-in-out;
}
- & .zen-media-card:not([zen-removing]) {
+ & .zen-media-card:not([zen-removing], [zen-hiding]) {
transform: none;
opacity: 1;
}
@@ -168,11 +168,9 @@
transition: none;
}
- &[zen-removing] {
- position: absolute;
- left: 0;
- width: 100%;
- transform: none;
+ /* Removed and hiding cards sink down behind the stack while fading out */
+ &[zen-removing],
+ &[zen-hiding] {
translate: 0 0.5rem;
opacity: 0;
filter: blur(2px);
@@ -183,6 +181,16 @@
filter 0.3s var(--zen-media-stack-easing);
}
+ /* Removed cards additionally leave the flex flow instantly (bottom is
+ set inline to where the card was), so only translate/opacity/filter
+ animate; hiding cards stay in flow until the animation finishes. */
+ &[zen-removing] {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ transform: none;
+ }
+
&[stack-overflow] {
display: none;
}