mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 07:27:45 +00:00
LibWeb: Convert flex-basis to LengthPercentage
The flexbox logic confuses me so regressions are possible, though our test page looks the same as before so it should be fine. Renamed FlexBasis::Length -> LengthPercentage too, for clarity.
This commit is contained in:
parent
784ba2ec42
commit
cb0cce5cdc
5 changed files with 29 additions and 15 deletions
|
@ -69,9 +69,9 @@ struct Transformation {
|
|||
|
||||
struct FlexBasisData {
|
||||
CSS::FlexBasis type { CSS::FlexBasis::Auto };
|
||||
CSS::Length length {};
|
||||
Optional<CSS::LengthPercentage> length_percentage;
|
||||
|
||||
bool is_definite() const { return type == CSS::FlexBasis::Length; }
|
||||
bool is_definite() const { return type == CSS::FlexBasis::LengthPercentage; }
|
||||
};
|
||||
|
||||
struct BoxShadowData {
|
||||
|
|
|
@ -439,6 +439,13 @@ static NonnullRefPtr<StyleValue> value_or_default(Optional<StyleProperty> proper
|
|||
return default_style;
|
||||
}
|
||||
|
||||
static NonnullRefPtr<StyleValue> style_value_for_length_percentage(LengthPercentage const& length_percentage)
|
||||
{
|
||||
if (length_percentage.is_percentage())
|
||||
return PercentageStyleValue::create(length_percentage.percentage());
|
||||
return LengthStyleValue::create(length_percentage.length());
|
||||
}
|
||||
|
||||
RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout::NodeWithStyle const& layout_node, PropertyID property_id) const
|
||||
{
|
||||
switch (property_id) {
|
||||
|
@ -474,8 +481,8 @@ RefPtr<StyleValue> ResolvedCSSStyleDeclaration::style_value_for_property(Layout:
|
|||
switch (layout_node.computed_values().flex_basis().type) {
|
||||
case FlexBasis::Content:
|
||||
return IdentifierStyleValue::create(CSS::ValueID::Content);
|
||||
case FlexBasis::Length:
|
||||
return LengthStyleValue::create(layout_node.computed_values().flex_basis().length);
|
||||
case FlexBasis::LengthPercentage:
|
||||
return style_value_for_length_percentage(*layout_node.computed_values().flex_basis().length_percentage);
|
||||
case FlexBasis::Auto:
|
||||
return IdentifierStyleValue::create(CSS::ValueID::Auto);
|
||||
default:
|
||||
|
|
|
@ -194,18 +194,22 @@ Optional<CSS::FlexWrap> StyleProperties::flex_wrap() const
|
|||
|
||||
Optional<CSS::FlexBasisData> StyleProperties::flex_basis() const
|
||||
{
|
||||
auto value = property(CSS::PropertyID::FlexBasis);
|
||||
if (!value.has_value())
|
||||
auto maybe_value = property(CSS::PropertyID::FlexBasis);
|
||||
if (!maybe_value.has_value())
|
||||
return {};
|
||||
auto& value = maybe_value.value();
|
||||
|
||||
if (value.value()->is_identifier() && value.value()->to_identifier() == CSS::ValueID::Content)
|
||||
if (value->is_identifier() && value->to_identifier() == CSS::ValueID::Content)
|
||||
return { { CSS::FlexBasis::Content, {} } };
|
||||
|
||||
if (value.value()->has_auto())
|
||||
if (value->has_auto())
|
||||
return { { CSS::FlexBasis::Auto, {} } };
|
||||
|
||||
if (value.value()->has_length())
|
||||
return { { CSS::FlexBasis::Length, value.value()->to_length() } };
|
||||
if (value->is_percentage())
|
||||
return { { CSS::FlexBasis::LengthPercentage, value->as_percentage().percentage() } };
|
||||
|
||||
if (value->has_length())
|
||||
return { { CSS::FlexBasis::LengthPercentage, value->to_length() } };
|
||||
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -112,7 +112,7 @@ enum class Cursor {
|
|||
|
||||
enum class FlexBasis {
|
||||
Content,
|
||||
Length,
|
||||
LengthPercentage,
|
||||
Auto,
|
||||
};
|
||||
|
||||
|
@ -1185,7 +1185,7 @@ private:
|
|||
|
||||
class PercentageStyleValue final : public StyleValue {
|
||||
public:
|
||||
static NonnullRefPtr<PercentageStyleValue> create(Percentage&& percentage)
|
||||
static NonnullRefPtr<PercentageStyleValue> create(Percentage percentage)
|
||||
{
|
||||
return adopt_ref(*new PercentageStyleValue(move(percentage)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue