From 85356094b50878e78d40d79c2a9e96ff9aac5a6b Mon Sep 17 00:00:00 2001 From: Ankush Chatterjee Date: Wed, 23 Oct 2024 22:15:19 +0530 Subject: [PATCH] LibWeb/CSS: Add math expression support for transform-origin --- Tests/LibWeb/Text/expected/css/calc-coverage.txt | 4 ++-- Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 3 +++ Userland/Libraries/LibWeb/CSS/StyleProperties.cpp | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Tests/LibWeb/Text/expected/css/calc-coverage.txt b/Tests/LibWeb/Text/expected/css/calc-coverage.txt index 4d1b0a0ec45..48c1305f8aa 100644 --- a/Tests/LibWeb/Text/expected/css/calc-coverage.txt +++ b/Tests/LibWeb/Text/expected/css/calc-coverage.txt @@ -138,8 +138,8 @@ text-indent: 'calc(2%)' -> 'calc(2%)' text-indent: 'calc(2% * var(--n))' -> '4%' top: 'calc(2%)' -> 'calc(2%)' top: 'calc(2% * var(--n))' -> '4%' -transform-origin: 'calc(2px) calc(2%)' -> '50% 50%' -transform-origin: 'calc(2px * var(--n)) calc(2% * var(--n))' -> '50% 50%' +transform-origin: 'calc(2px) calc(2%)' -> 'calc(2px) calc(2%)' +transform-origin: 'calc(2px * var(--n)) calc(2% * var(--n))' -> 'calc(2px * 2) 4%' transition-delay: 'calc(2s)' -> 'calc(2s)' transition-delay: 'calc(2s * var(--n))' -> '4s' transition-duration: 'calc(2s)' -> 'calc(2s)' diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index c8d104df621..0fca06f5ee9 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -6929,6 +6929,9 @@ RefPtr Parser::parse_transform_origin_value(TokenStreamis_math()) { + return AxisOffset { Axis::None, value->as_math() }; + } return OptionalNone {}; }; diff --git a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp index 5dee90a0a44..62eea1997d1 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleProperties.cpp @@ -534,6 +534,8 @@ static Optional length_percentage_for_style_value(CSSStyleValu return value.as_length().length(); if (value.is_percentage()) return value.as_percentage().percentage(); + if (value.is_math()) + return LengthPercentage { const_cast(value.as_math()) }; return {}; }