1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 10:01:13 +09:00

LibWeb: Add plumbing for the new 'object-position' property

Now, the 'object-position' property gets properly parsed and is
provided to the rest of the ecosystem.
In the parser we use the same parsing as for the background-position,
which is not entirely correct but almost a <position>.
This commit is contained in:
Tobias Christiansen 2023-10-16 13:52:51 +02:00 committed by Sam Atkins
parent 7e11de272f
commit d00c7e55a5
Notes: sideshowbarker 2024-07-18 01:43:16 +09:00
3 changed files with 14 additions and 0 deletions

View file

@ -5952,6 +5952,12 @@ Parser::ParseErrorOr<NonnullRefPtr<StyleValue>> Parser::parse_css_value(Property
if (auto parsed_value = parse_math_depth_value(component_values)) if (auto parsed_value = parse_math_depth_value(component_values))
return parsed_value.release_nonnull(); return parsed_value.release_nonnull();
return ParseError::SyntaxError; return ParseError::SyntaxError;
case PropertyID::ObjectPosition:
// FIXME: This should use a parse_position compatible to VALUES-4
// and not the background position, which is almost the same.
if (auto parsed_value = parse_comma_separated_value_list(component_values, [this](auto& tokens) { return parse_single_background_position_value(tokens); }))
return parsed_value.release_nonnull();
return ParseError::SyntaxError;
case PropertyID::Overflow: case PropertyID::Overflow:
if (auto parsed_value = parse_overflow_value(component_values)) if (auto parsed_value = parse_overflow_value(component_values))
return parsed_value.release_nonnull(); return parsed_value.release_nonnull();

View file

@ -22,6 +22,7 @@
#include <LibWeb/CSS/StyleValues/MathDepthStyleValue.h> #include <LibWeb/CSS/StyleValues/MathDepthStyleValue.h>
#include <LibWeb/CSS/StyleValues/NumberStyleValue.h> #include <LibWeb/CSS/StyleValues/NumberStyleValue.h>
#include <LibWeb/CSS/StyleValues/PercentageStyleValue.h> #include <LibWeb/CSS/StyleValues/PercentageStyleValue.h>
#include <LibWeb/CSS/StyleValues/PositionStyleValue.h>
#include <LibWeb/CSS/StyleValues/RectStyleValue.h> #include <LibWeb/CSS/StyleValues/RectStyleValue.h>
#include <LibWeb/CSS/StyleValues/ShadowStyleValue.h> #include <LibWeb/CSS/StyleValues/ShadowStyleValue.h>
#include <LibWeb/CSS/StyleValues/StringStyleValue.h> #include <LibWeb/CSS/StyleValues/StringStyleValue.h>
@ -1007,6 +1008,12 @@ Optional<CSS::ObjectFit> StyleProperties::object_fit() const
return value_id_to_object_fit(value->to_identifier()); return value_id_to_object_fit(value->to_identifier());
} }
CSS::PositionStyleValue const& StyleProperties::object_position() const
{
auto value = property(CSS::PropertyID::ObjectPosition);
return value->as_position();
}
Optional<CSS::TableLayout> StyleProperties::table_layout() const Optional<CSS::TableLayout> StyleProperties::table_layout() const
{ {
auto value = property(CSS::PropertyID::TableLayout); auto value = property(CSS::PropertyID::TableLayout);

View file

@ -117,6 +117,7 @@ public:
Vector<Vector<String>> grid_template_areas() const; Vector<Vector<String>> grid_template_areas() const;
String grid_area() const; String grid_area() const;
Optional<CSS::ObjectFit> object_fit() const; Optional<CSS::ObjectFit> object_fit() const;
CSS::PositionStyleValue const& object_position() const;
Optional<CSS::TableLayout> table_layout() const; Optional<CSS::TableLayout> table_layout() const;
Vector<CSS::Transformation> transformations() const; Vector<CSS::Transformation> transformations() const;