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'] {
|
||||
@media (-moz-platform: macos) {
|
||||
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))) {
|
||||
/* Mica popups have a weird background while the animation is running */
|
||||
|
|
|
@ -551,6 +551,8 @@
|
|||
|
||||
async fullyOpenGlance({ forSplit = false } = {}) {
|
||||
this.animatingFullOpen = true;
|
||||
this.#currentTab.removeAttribute('zen-glance-tab');
|
||||
|
||||
gBrowser._insertTabAtIndex(this.#currentTab, {
|
||||
index: this.getTabPosition(this.#currentTab),
|
||||
});
|
||||
|
@ -558,7 +560,6 @@
|
|||
this._clearContainerStyles(this.browserWrapper);
|
||||
this.browserWrapper.removeAttribute('has-finished-animation');
|
||||
this.browserWrapper.setAttribute('animate-full', true);
|
||||
this.#currentTab.removeAttribute('zen-glance-tab');
|
||||
this.#currentTab.removeAttribute('glance-id');
|
||||
this.#currentParentTab.removeAttribute('glance-id');
|
||||
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