From 04ac06f3c4680663cd80f6d3c9f030eaaa58c57a Mon Sep 17 00:00:00 2001 From: Callum Law Date: Mon, 4 Aug 2025 21:14:44 +1200 Subject: [PATCH] LibWeb: Absolutize CursorStyleValues in StyleComputer::absolutize_values --- Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.cpp | 8 ++++++++ Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.h | 2 ++ .../Text/expected/css/absolutized-cursor-style-value.txt | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.cpp b/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.cpp index 300fc871d1f..b663f36148f 100644 --- a/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.cpp +++ b/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.cpp @@ -28,6 +28,14 @@ String CursorStyleValue::to_string(SerializationMode mode) const return builder.to_string_without_validation(); } +ValueComparingNonnullRefPtr CursorStyleValue::absolutized(CSSPixelRect const& viewport_rect, Length::FontMetrics const& font_metrics, Length::FontMetrics const& root_font_metrics) const +{ + return CursorStyleValue::create( + m_properties.image->absolutized(viewport_rect, font_metrics, root_font_metrics)->as_abstract_image(), + m_properties.x.map([&](NumberOrCalculated const& value) { return value.absolutized(viewport_rect, font_metrics, root_font_metrics); }), + m_properties.y.map([&](NumberOrCalculated const& value) { return value.absolutized(viewport_rect, font_metrics, root_font_metrics); })); +} + Optional CursorStyleValue::make_image_cursor(Layout::NodeWithStyle const& layout_node) const { auto const& image = *this->image(); diff --git a/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.h b/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.h index 3b840b0da02..3dff1d05981 100644 --- a/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.h +++ b/Libraries/LibWeb/CSS/StyleValues/CursorStyleValue.h @@ -33,6 +33,8 @@ public: virtual String to_string(SerializationMode) const override; + virtual ValueComparingNonnullRefPtr absolutized(CSSPixelRect const& viewport_rect, Length::FontMetrics const& font_metrics, Length::FontMetrics const& root_font_metrics) const override; + bool properties_equal(CursorStyleValue const& other) const { return m_properties == other.m_properties; } private: diff --git a/Tests/LibWeb/Text/expected/css/absolutized-cursor-style-value.txt b/Tests/LibWeb/Text/expected/css/absolutized-cursor-style-value.txt index f22d3263e28..4d212831167 100644 --- a/Tests/LibWeb/Text/expected/css/absolutized-cursor-style-value.txt +++ b/Tests/LibWeb/Text/expected/css/absolutized-cursor-style-value.txt @@ -1 +1 @@ -url("foo.png") calc(1 * sign(1em - 1px)) calc(2 * sign(1em - 1px)), pointer +url("foo.png") 1 2, pointer