mirror of
https://github.com/zen-browser/desktop.git
synced 2025-07-07 21:49:58 +02:00
Implemented -zen-window-transform-origin
attribute and applied it to the panels on the right side
This commit is contained in:
parent
5b318a8aaf
commit
5d1963e0ec
9 changed files with 162 additions and 1 deletions
|
@ -6,6 +6,19 @@
|
||||||
panel[type='arrow'][animate='open'] {
|
panel[type='arrow'][animate='open'] {
|
||||||
@media (-moz-platform: macos) {
|
@media (-moz-platform: macos) {
|
||||||
animation: zen-jello-animation-macos 0.4s ease-out;
|
animation: zen-jello-animation-macos 0.4s ease-out;
|
||||||
|
&[side='bottom'] {
|
||||||
|
/* Animate from the bottom */
|
||||||
|
-zen-window-transform-origin: 0 100%;
|
||||||
|
}
|
||||||
|
:root[zen-right-side='true'] & {
|
||||||
|
/* Animate from the right */
|
||||||
|
-zen-window-transform-origin: 100% 0;
|
||||||
|
|
||||||
|
&[side='bottom'] {
|
||||||
|
/* Animate from the bottom right */
|
||||||
|
-zen-window-transform-origin: 100% 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media (-moz-platform: linux) or ((-moz-platform: windows) and (not (-moz-windows-mica-popups))) {
|
@media (-moz-platform: linux) or ((-moz-platform: windows) and (not (-moz-windows-mica-popups))) {
|
||||||
/* Mica popups have a weird background while the animation is running */
|
/* Mica popups have a weird background while the animation is running */
|
||||||
|
|
|
@ -551,6 +551,8 @@
|
||||||
|
|
||||||
async fullyOpenGlance({ forSplit = false } = {}) {
|
async fullyOpenGlance({ forSplit = false } = {}) {
|
||||||
this.animatingFullOpen = true;
|
this.animatingFullOpen = true;
|
||||||
|
this.#currentTab.removeAttribute('zen-glance-tab');
|
||||||
|
|
||||||
gBrowser._insertTabAtIndex(this.#currentTab, {
|
gBrowser._insertTabAtIndex(this.#currentTab, {
|
||||||
index: this.getTabPosition(this.#currentTab),
|
index: this.getTabPosition(this.#currentTab),
|
||||||
});
|
});
|
||||||
|
@ -558,7 +560,6 @@
|
||||||
this._clearContainerStyles(this.browserWrapper);
|
this._clearContainerStyles(this.browserWrapper);
|
||||||
this.browserWrapper.removeAttribute('has-finished-animation');
|
this.browserWrapper.removeAttribute('has-finished-animation');
|
||||||
this.browserWrapper.setAttribute('animate-full', true);
|
this.browserWrapper.setAttribute('animate-full', true);
|
||||||
this.#currentTab.removeAttribute('zen-glance-tab');
|
|
||||||
this.#currentTab.removeAttribute('glance-id');
|
this.#currentTab.removeAttribute('glance-id');
|
||||||
this.#currentParentTab.removeAttribute('glance-id');
|
this.#currentParentTab.removeAttribute('glance-id');
|
||||||
gBrowser.selectedTab = this.#currentTab;
|
gBrowser.selectedTab = this.#currentTab;
|
||||||
|
|
12
src/devtools/server/actors/animation-type-longhand-js.patch
Normal file
12
src/devtools/server/actors/animation-type-longhand-js.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/devtools/server/actors/animation-type-longhand.js b/devtools/server/actors/animation-type-longhand.js
|
||||||
|
index a7faa2a2f17144198338aa80207ccf33b631cf32..7c15f8d8d533721b661866643cf10b37c99cb051 100644
|
||||||
|
--- a/devtools/server/actors/animation-type-longhand.js
|
||||||
|
+++ b/devtools/server/actors/animation-type-longhand.js
|
||||||
|
@@ -341,6 +341,7 @@ exports.ANIMATION_TYPE_FOR_LONGHANDS = [
|
||||||
|
"transform-origin",
|
||||||
|
"translate",
|
||||||
|
"-moz-window-transform",
|
||||||
|
+ "-zen-window-transform-origin",
|
||||||
|
"-webkit-line-clamp",
|
||||||
|
]),
|
||||||
|
],
|
50
src/dom/base/use_counter_metrics-yaml.patch
Normal file
50
src/dom/base/use_counter_metrics-yaml.patch
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
diff --git a/dom/base/use_counter_metrics.yaml b/dom/base/use_counter_metrics.yaml
|
||||||
|
index ffdb908e5760eea8643f3c3f85979cb5f7ff36ae..8ab16b5283f8c15f20b0d630a9b5fc82ec803af5 100644
|
||||||
|
--- a/dom/base/use_counter_metrics.yaml
|
||||||
|
+++ b/dom/base/use_counter_metrics.yaml
|
||||||
|
@@ -21289,6 +21289,22 @@ use.counter.css.page:
|
||||||
|
send_in_pings:
|
||||||
|
- use-counters
|
||||||
|
|
||||||
|
+ css_zen_window_transform_origin:
|
||||||
|
+ type: counter
|
||||||
|
+ description: >
|
||||||
|
+ Whether a page used the CSS property -zen-window-transform-origin.
|
||||||
|
+ Compare against `use.counter.top_level_content_documents_destroyed`
|
||||||
|
+ to calculate the rate.
|
||||||
|
+ bugs:
|
||||||
|
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
|
||||||
|
+ data_reviews:
|
||||||
|
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
|
||||||
|
+ notification_emails:
|
||||||
|
+ - dom-core@mozilla.com
|
||||||
|
+ expires: never
|
||||||
|
+ send_in_pings:
|
||||||
|
+ - use-counters
|
||||||
|
+
|
||||||
|
css_transform_origin:
|
||||||
|
type: counter
|
||||||
|
description: >
|
||||||
|
@@ -33259,6 +33275,22 @@ use.counter.css.doc:
|
||||||
|
send_in_pings:
|
||||||
|
- use-counters
|
||||||
|
|
||||||
|
+ css_zen_window_transform_origin:
|
||||||
|
+ type: counter
|
||||||
|
+ description: >
|
||||||
|
+ Whether a document used the CSS property -zen-window-transform-origin.
|
||||||
|
+ Compare against `use.counter.content_documents_destroyed`
|
||||||
|
+ to calculate the rate.
|
||||||
|
+ bugs:
|
||||||
|
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
|
||||||
|
+ data_reviews:
|
||||||
|
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=1852098
|
||||||
|
+ notification_emails:
|
||||||
|
+ - dom-core@mozilla.com
|
||||||
|
+ expires: never
|
||||||
|
+ send_in_pings:
|
||||||
|
+ - use-counters
|
||||||
|
+
|
||||||
|
css_transform_origin:
|
||||||
|
type: counter
|
||||||
|
description: >
|
16
src/layout/generic/nsIFrame-cpp.patch
Normal file
16
src/layout/generic/nsIFrame-cpp.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/layout/generic/nsIFrame.cpp b/layout/generic/nsIFrame.cpp
|
||||||
|
index 01f724b0c42999107c4622323f849ddd2a6fe5c9..9dafa755c711c43c11835dfe9f7ba1b70b52b9a3 100644
|
||||||
|
--- a/layout/generic/nsIFrame.cpp
|
||||||
|
+++ b/layout/generic/nsIFrame.cpp
|
||||||
|
@@ -11694,6 +11694,11 @@ gfx::Matrix nsIFrame::ComputeWidgetTransform() const {
|
||||||
|
gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms(
|
||||||
|
uiReset->mMozWindowTransform, refBox, float(appUnitsPerDevPixel));
|
||||||
|
|
||||||
|
+ const StyleTransformOrigin& origin = uiReset->mWindowTransformOrigin;
|
||||||
|
+ Point transformOrigin = nsStyleTransformMatrix::Convert2DPosition(
|
||||||
|
+ origin.horizontal, origin.vertical, refBox, appUnitsPerDevPixel);
|
||||||
|
+ matrix.ChangeBasis(Point3D(transformOrigin.x, transformOrigin.y, 0));
|
||||||
|
+
|
||||||
|
gfx::Matrix result2d;
|
||||||
|
if (!matrix.CanDraw2D(&result2d)) {
|
||||||
|
// FIXME: It would be preferable to reject non-2D transforms at parse time.
|
22
src/layout/style/nsStyleStruct-cpp.patch
Normal file
22
src/layout/style/nsStyleStruct-cpp.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
|
||||||
|
index f89bade8099183baa55b38ccc3c77c7ba9f1a290..8ada58a7965e7f2c9375d8b9bf64a5c78d80bf3f 100644
|
||||||
|
--- a/layout/style/nsStyleStruct.cpp
|
||||||
|
+++ b/layout/style/nsStyleStruct.cpp
|
||||||
|
@@ -3204,6 +3204,9 @@ nsStyleUIReset::nsStyleUIReset()
|
||||||
|
mWindowShadow(StyleWindowShadow::Auto),
|
||||||
|
mWindowOpacity(1.0),
|
||||||
|
mMozWindowInputRegionMargin(StyleLength::Zero()),
|
||||||
|
+ mWindowTransformOrigin{LengthPercentage::FromPercentage(0.5),
|
||||||
|
+ LengthPercentage::FromPercentage(0.5),
|
||||||
|
+ {0.}},
|
||||||
|
mTransitions(
|
||||||
|
nsStyleAutoArray<StyleTransition>::WITH_SINGLE_INITIAL_ELEMENT),
|
||||||
|
mTransitionTimingFunctionCount(1),
|
||||||
|
@@ -3247,6 +3250,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
|
||||||
|
mWindowOpacity(aSource.mWindowOpacity),
|
||||||
|
mMozWindowInputRegionMargin(aSource.mMozWindowInputRegionMargin),
|
||||||
|
mMozWindowTransform(aSource.mMozWindowTransform),
|
||||||
|
+ mWindowTransformOrigin(aSource.mWindowTransformOrigin),
|
||||||
|
mTransitions(aSource.mTransitions.Clone()),
|
||||||
|
mTransitionTimingFunctionCount(aSource.mTransitionTimingFunctionCount),
|
||||||
|
mTransitionDurationCount(aSource.mTransitionDurationCount),
|
12
src/layout/style/nsStyleStruct-h.patch
Normal file
12
src/layout/style/nsStyleStruct-h.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h
|
||||||
|
index 97eed3431394e21eb7b8890fd87aea8240e23f2b..898d5876c03f822e9e0f2ec892ee86e0d17daf73 100644
|
||||||
|
--- a/layout/style/nsStyleStruct.h
|
||||||
|
+++ b/layout/style/nsStyleStruct.h
|
||||||
|
@@ -1875,6 +1875,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleUIReset {
|
||||||
|
// The margin of the window region that should be transparent to events.
|
||||||
|
mozilla::StyleLength mMozWindowInputRegionMargin;
|
||||||
|
mozilla::StyleTransform mMozWindowTransform;
|
||||||
|
+ mozilla::StyleTransformOrigin mWindowTransformOrigin;
|
||||||
|
|
||||||
|
nsStyleAutoArray<mozilla::StyleTransition> mTransitions;
|
||||||
|
// The number of elements in mTransitions that are not from repeating
|
12
src/layout/style/test/ListCSSProperties-cpp.patch
Normal file
12
src/layout/style/test/ListCSSProperties-cpp.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/layout/style/test/ListCSSProperties.cpp b/layout/style/test/ListCSSProperties.cpp
|
||||||
|
index b6a881b037a3720991f8097903e859dfc72012c1..8917a8cc23b97e37b4accaaf0d6c2876b36594af 100644
|
||||||
|
--- a/layout/style/test/ListCSSProperties.cpp
|
||||||
|
+++ b/layout/style/test/ListCSSProperties.cpp
|
||||||
|
@@ -108,6 +108,7 @@ const char* gInaccessibleProperties[] = {
|
||||||
|
"-moz-window-opacity", // chrome-only internal properties
|
||||||
|
"-moz-window-transform", // chrome-only internal properties
|
||||||
|
"-moz-window-shadow", // chrome-only internal properties
|
||||||
|
+ "-zen-window-transform-origin", // chrome-only internal properties
|
||||||
|
};
|
||||||
|
|
||||||
|
inline int is_inaccessible(const char* aPropName) {
|
|
@ -0,0 +1,23 @@
|
||||||
|
diff --git a/servo/components/style/properties/longhands/ui.mako.rs b/servo/components/style/properties/longhands/ui.mako.rs
|
||||||
|
index b7d24fe7bb54b1c143876e3bc9da59c64324ffa5..c36f7edcf076e31209e847af0b59361033d3b4da 100644
|
||||||
|
--- a/servo/components/style/properties/longhands/ui.mako.rs
|
||||||
|
+++ b/servo/components/style/properties/longhands/ui.mako.rs
|
||||||
|
@@ -286,6 +286,18 @@ ${helpers.predefined_type(
|
||||||
|
affects="",
|
||||||
|
)}
|
||||||
|
|
||||||
|
+${helpers.predefined_type(
|
||||||
|
+ "-zen-window-transform-origin",
|
||||||
|
+ "TransformOrigin",
|
||||||
|
+ "computed::TransformOrigin::initial_value()",
|
||||||
|
+ engines="gecko",
|
||||||
|
+ gecko_ffi_name="mWindowTransformOrigin",
|
||||||
|
+ boxed=True,
|
||||||
|
+ spec="None (Nonstandard internal property)",
|
||||||
|
+ enabled_in="chrome",
|
||||||
|
+ affects="overflow",
|
||||||
|
+)}
|
||||||
|
+
|
||||||
|
${helpers.predefined_type(
|
||||||
|
"animation-fill-mode",
|
||||||
|
"AnimationFillMode",
|
Loading…
Add table
Add a link
Reference in a new issue