From 1ba64a1d7e4fb23c87f520a5c2f0054e5043624f Mon Sep 17 00:00:00 2001 From: Callum Law Date: Mon, 25 Aug 2025 15:11:10 +1200 Subject: [PATCH] LibWeb: Remove StyleComputer as friend of ComputedProperties Everything we need to do with ComputedProperties in StyleComputer can be done via the public APIs --- Libraries/LibWeb/CSS/ComputedProperties.h | 2 -- Libraries/LibWeb/CSS/StyleComputer.cpp | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Libraries/LibWeb/CSS/ComputedProperties.h b/Libraries/LibWeb/CSS/ComputedProperties.h index f32e70a6bd4..26b19f20731 100644 --- a/Libraries/LibWeb/CSS/ComputedProperties.h +++ b/Libraries/LibWeb/CSS/ComputedProperties.h @@ -258,8 +258,6 @@ public: } private: - friend class StyleComputer; - ComputedProperties(); virtual void visit_edges(Visitor&) override; diff --git a/Libraries/LibWeb/CSS/StyleComputer.cpp b/Libraries/LibWeb/CSS/StyleComputer.cpp index 11e24ee11fd..8a4c6dc486f 100644 --- a/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -2143,22 +2143,26 @@ void StyleComputer::absolutize_values(ComputedProperties& style) const style.first_available_computed_font().pixel_metrics() }; - auto& line_height_value_slot = style.m_property_values[to_underlying(CSS::PropertyID::LineHeight)]; + auto const& line_height_specified_value = style.property(CSS::PropertyID::LineHeight, ComputedProperties::WithAnimationsApplied::No); auto line_height = style.compute_line_height(viewport_rect(), font_metrics, m_root_element_font_metrics); font_metrics.line_height = line_height; // NOTE: line-height might be using lh which should be resolved against the parent line height (like we did here already) - if (line_height_value_slot && (line_height_value_slot->is_length() || line_height_value_slot->is_percentage())) - line_height_value_slot = LengthStyleValue::create(Length::make_px(line_height)); + if (line_height_specified_value.is_length() || line_height_specified_value.is_percentage()) { + auto const& computed_value = LengthStyleValue::create(Length::make_px(line_height)); + auto is_inherited = style.is_property_inherited(PropertyID::LineHeight) ? ComputedProperties::Inherited::Yes : ComputedProperties::Inherited::No; - for (size_t i = 0; i < style.m_property_values.size(); ++i) { - auto& value_slot = style.m_property_values[i]; - if (!value_slot) - continue; - value_slot = value_slot->absolutized(viewport_rect(), font_metrics, m_root_element_font_metrics); + style.set_property(PropertyID::LineHeight, computed_value, is_inherited); } + style.for_each_property([&](PropertyID property_id, auto& value) { + auto const& absolutized_value = value.absolutized(viewport_rect(), font_metrics, m_root_element_font_metrics); + auto is_inherited = style.is_property_inherited(property_id) ? ComputedProperties::Inherited::Yes : ComputedProperties::Inherited::No; + + style.set_property(property_id, absolutized_value, is_inherited); + }); + style.set_line_height({}, line_height); }