From ce5914230f25155171bd2510f5f82983e856b554 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 18 Apr 2022 17:10:50 +0100 Subject: [PATCH] LibWeb: Actually use BorderRadiusShorthandStyleValue Somehow we were never actually using this before, but parsing the property as a StyleValueList instead. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 19 +++++++++---------- .../Libraries/LibWeb/CSS/StyleComputer.cpp | 9 ++++++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 9f9b7e9d7b..baff87b950 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -3909,17 +3909,16 @@ RefPtr Parser::parse_border_radius_shorthand_value(Vector border_radii; - border_radii.append(BorderRadiusStyleValue::create(top_left(horizontal_radii), - vertical_radii.is_empty() ? top_left(horizontal_radii) : top_left(vertical_radii))); - border_radii.append(BorderRadiusStyleValue::create(top_right(horizontal_radii), - vertical_radii.is_empty() ? top_right(horizontal_radii) : top_right(vertical_radii))); - border_radii.append(BorderRadiusStyleValue::create(bottom_right(horizontal_radii), - vertical_radii.is_empty() ? bottom_right(horizontal_radii) : bottom_right(vertical_radii))); - border_radii.append(BorderRadiusStyleValue::create(bottom_left(horizontal_radii), - vertical_radii.is_empty() ? bottom_left(horizontal_radii) : bottom_left(vertical_radii))); + auto top_left_radius = BorderRadiusStyleValue::create(top_left(horizontal_radii), + vertical_radii.is_empty() ? top_left(horizontal_radii) : top_left(vertical_radii)); + auto top_right_radius = BorderRadiusStyleValue::create(top_right(horizontal_radii), + vertical_radii.is_empty() ? top_right(horizontal_radii) : top_right(vertical_radii)); + auto bottom_right_radius = BorderRadiusStyleValue::create(bottom_right(horizontal_radii), + vertical_radii.is_empty() ? bottom_right(horizontal_radii) : bottom_right(vertical_radii)); + auto bottom_left_radius = BorderRadiusStyleValue::create(bottom_left(horizontal_radii), + vertical_radii.is_empty() ? bottom_left(horizontal_radii) : bottom_left(vertical_radii)); - return StyleValueList::create(move(border_radii), StyleValueList::Separator::Space); + return BorderRadiusShorthandStyleValue::create(move(top_left_radius), move(top_right_radius), move(bottom_right_radius), move(bottom_left_radius)); } RefPtr Parser::parse_shadow_value(Vector const& component_values, AllowInsetKeyword allow_inset_keyword) diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index 07d970d6a3..bf5dde38c0 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -292,9 +292,12 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::BorderRadius) { - if (value.is_value_list()) { - auto const& values_list = value.as_value_list(); - assign_edge_values(PropertyID::BorderTopLeftRadius, PropertyID::BorderTopRightRadius, PropertyID::BorderBottomRightRadius, PropertyID::BorderBottomLeftRadius, values_list.values()); + if (value.is_border_radius_shorthand()) { + auto const& shorthand = value.as_border_radius_shorthand(); + style.set_property(CSS::PropertyID::BorderTopLeftRadius, shorthand.top_left()); + style.set_property(CSS::PropertyID::BorderTopRightRadius, shorthand.top_right()); + style.set_property(CSS::PropertyID::BorderBottomRightRadius, shorthand.bottom_right()); + style.set_property(CSS::PropertyID::BorderBottomLeftRadius, shorthand.bottom_left()); return; }