summaryrefslogtreecommitdiffstats
path: root/layout/style
diff options
context:
space:
mode:
authorAndy <webmaster@RealityRipple.com>2020-08-04 13:54:01 -0700
committerMoonchild <moonchild@palemoon.org>2020-08-30 09:23:18 +0000
commit0bbe6ec10589b8540aa86200bf2b209ad4e563ba (patch)
tree2144747a67a4be26df207060bd9e32e8e2f7f39a /layout/style
parent48d31ea5ebe2a4901fcb542e1e48b6fd6b67d64c (diff)
downloadUXP-0bbe6ec10589b8540aa86200bf2b209ad4e563ba.tar
UXP-0bbe6ec10589b8540aa86200bf2b209ad4e563ba.tar.gz
UXP-0bbe6ec10589b8540aa86200bf2b209ad4e563ba.tar.lz
UXP-0bbe6ec10589b8540aa86200bf2b209ad4e563ba.tar.xz
UXP-0bbe6ec10589b8540aa86200bf2b209ad4e563ba.zip
Issue #1620 - Use Intrinsic Aspect Ratio for Images (uplift)
Diffstat (limited to 'layout/style')
-rw-r--r--layout/style/nsCSSPropList.h11
-rw-r--r--layout/style/nsRuleNode.cpp6
-rw-r--r--layout/style/nsStyleStruct.cpp7
-rw-r--r--layout/style/nsStyleStruct.h1
-rw-r--r--layout/style/test/ListCSSProperties.cpp1
5 files changed, 26 insertions, 0 deletions
diff --git a/layout/style/nsCSSPropList.h b/layout/style/nsCSSPropList.h
index 411f982a4..44bd44cef 100644
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -470,6 +470,17 @@ CSS_PROP_DISPLAY(
kAppearanceKTable,
CSS_PROP_NO_OFFSET,
eStyleAnimType_Discrete)
+CSS_PROP_POSITION(
+ aspect-ratio,
+ aspect_ratio,
+ AspectRatio,
+ CSS_PROPERTY_INTERNAL |
+ CSS_PROPERTY_PARSE_INACCESSIBLE,
+ "",
+ VARIANT_NUMBER,
+ nullptr,
+ offsetof(nsStylePosition, mAspectRatio),
+ eStyleAnimType_None)
CSS_PROP_DISPLAY(
backface-visibility,
backface_visibility,
diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
index a0f65c069..1a451a2ef 100644
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -8544,6 +8544,12 @@ nsRuleNode::ComputePositionData(void* aStartStruct,
SETCOORD_UNSET_INITIAL,
aContext, mPresContext, conditions);
+ // aspect-ratio: float, initial
+ SetFactor(*aRuleData->ValueForAspectRatio(),
+ pos->mAspectRatio, conditions,
+ parentPos->mAspectRatio, 0.0f,
+ SETFCT_UNSET_INITIAL | SETFCT_POSITIVE | SETFCT_NONE);
+
// box-sizing: enum, inherit, initial
SetValue(*aRuleData->ValueForBoxSizing(),
pos->mBoxSizing, conditions,
diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp
index 9270f2960..3b19a4418 100644
--- a/layout/style/nsStyleStruct.cpp
+++ b/layout/style/nsStyleStruct.cpp
@@ -1408,6 +1408,7 @@ nsStylePosition::nsStylePosition(StyleStructContext aContext)
, mGridAutoColumnsMax(eStyleUnit_Auto)
, mGridAutoRowsMin(eStyleUnit_Auto)
, mGridAutoRowsMax(eStyleUnit_Auto)
+ , mAspectRatio(0.0f)
, mGridAutoFlow(NS_STYLE_GRID_AUTO_FLOW_ROW)
, mBoxSizing(StyleBoxSizing::Content)
, mAlignContent(NS_STYLE_ALIGN_NORMAL)
@@ -1466,6 +1467,7 @@ nsStylePosition::nsStylePosition(const nsStylePosition& aSource)
, mGridAutoColumnsMax(aSource.mGridAutoColumnsMax)
, mGridAutoRowsMin(aSource.mGridAutoRowsMin)
, mGridAutoRowsMax(aSource.mGridAutoRowsMax)
+ , mAspectRatio(aSource.mAspectRatio)
, mGridAutoFlow(aSource.mGridAutoFlow)
, mBoxSizing(aSource.mBoxSizing)
, mAlignContent(aSource.mAlignContent)
@@ -1636,6 +1638,11 @@ nsStylePosition::CalcDifference(const nsStylePosition& aNewData,
if (isVertical ? heightChanged : widthChanged) {
hint |= nsChangeHint_ReflowHintsForISizeChange;
}
+
+ if (mAspectRatio != aNewData.mAspectRatio) {
+ hint |= nsChangeHint_ReflowHintsForISizeChange |
+ nsChangeHint_ReflowHintsForBSizeChange;
+ }
} else {
if (widthChanged || heightChanged) {
hint |= nsChangeHint_NeutralChange;
diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h
index b257c6bb5..4bda817dd 100644
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -1815,6 +1815,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStylePosition
nsStyleCoord mGridAutoColumnsMax; // [reset] coord, percent, enum, calc, flex
nsStyleCoord mGridAutoRowsMin; // [reset] coord, percent, enum, calc, flex
nsStyleCoord mGridAutoRowsMax; // [reset] coord, percent, enum, calc, flex
+ float mAspectRatio; // [reset] float
uint8_t mGridAutoFlow; // [reset] enumerated. See nsStyleConsts.h
mozilla::StyleBoxSizing mBoxSizing; // [reset] see nsStyleConsts.h
diff --git a/layout/style/test/ListCSSProperties.cpp b/layout/style/test/ListCSSProperties.cpp
index 718032f61..9f727104b 100644
--- a/layout/style/test/ListCSSProperties.cpp
+++ b/layout/style/test/ListCSSProperties.cpp
@@ -106,6 +106,7 @@ const char *gInaccessibleProperties[] = {
"-x-span",
"-x-system-font",
"-x-text-zoom",
+ "aspect-ratio", // for now.
"-moz-control-character-visibility",
"-moz-script-level", // parsed by UA sheets only
"-moz-script-size-multiplier",