From d10eaa996eef125671874207798b8b61bd793846 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Thu, 28 Aug 2025 12:14:15 +0100 Subject: [PATCH] LibWeb/CSS: Use empty optional for `stretch` in FitContentSV ...instead of using an `auto` Length. --- Libraries/LibWeb/CSS/ComputedProperties.cpp | 4 +++- Libraries/LibWeb/CSS/Parser/ValueParsing.cpp | 2 ++ .../LibWeb/CSS/StyleValues/FitContentStyleValue.h | 12 ++++++------ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Libraries/LibWeb/CSS/ComputedProperties.cpp b/Libraries/LibWeb/CSS/ComputedProperties.cpp index c0ba3b49ef4..9ed0fbecab4 100644 --- a/Libraries/LibWeb/CSS/ComputedProperties.cpp +++ b/Libraries/LibWeb/CSS/ComputedProperties.cpp @@ -198,7 +198,9 @@ Size ComputedProperties::size_value(PropertyID id) const } if (value.is_fit_content()) { auto& fit_content = value.as_fit_content(); - return Size::make_fit_content(fit_content.length_percentage()); + if (auto length_percentage = fit_content.length_percentage(); length_percentage.has_value()) + return Size::make_fit_content(length_percentage.release_value()); + return Size::make_fit_content(); } if (value.is_calculated()) diff --git a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp index 0d70dc19ee9..b911ed03dc6 100644 --- a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp @@ -3192,6 +3192,8 @@ RefPtr Parser::parse_fit_content_value(TokenStreamis_auto()) + return FitContentStyleValue::create(); return FitContentStyleValue::create(maybe_length.release_value()); } diff --git a/Libraries/LibWeb/CSS/StyleValues/FitContentStyleValue.h b/Libraries/LibWeb/CSS/StyleValues/FitContentStyleValue.h index dc81675c4fa..021035f75de 100644 --- a/Libraries/LibWeb/CSS/StyleValues/FitContentStyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValues/FitContentStyleValue.h @@ -15,7 +15,7 @@ class FitContentStyleValue final : public StyleValue { public: static ValueComparingNonnullRefPtr create() { - return adopt_ref(*new (nothrow) FitContentStyleValue(LengthPercentage { Length::make_auto() })); + return adopt_ref(*new (nothrow) FitContentStyleValue()); } static ValueComparingNonnullRefPtr create(LengthPercentage length_percentage) { @@ -25,9 +25,9 @@ public: virtual String to_string(SerializationMode mode) const override { - if (m_length_percentage.is_auto()) + if (!m_length_percentage.has_value()) return "fit-content"_string; - return MUST(String::formatted("fit-content({})", m_length_percentage.to_string(mode))); + return MUST(String::formatted("fit-content({})", m_length_percentage->to_string(mode))); } bool equals(StyleValue const& other) const override @@ -37,16 +37,16 @@ public: return m_length_percentage == other.as_fit_content().m_length_percentage; } - [[nodiscard]] LengthPercentage const& length_percentage() const { return m_length_percentage; } + [[nodiscard]] Optional const& length_percentage() const { return m_length_percentage; } private: - FitContentStyleValue(LengthPercentage length_percentage) + FitContentStyleValue(Optional length_percentage = {}) : StyleValue(Type::FitContent) , m_length_percentage(move(length_percentage)) { } - LengthPercentage m_length_percentage; + Optional m_length_percentage; }; }