1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 08:07:45 +00:00

LibWeb: Add support for 'definite size' determination

This is pretty naive and there are more nuances in the spec but should
be enough for now.
This commit is contained in:
Tobias Christiansen 2021-05-30 13:43:47 +02:00 committed by Ali Mohammad Pur
parent ead864acf3
commit 27704f5f9e
2 changed files with 18 additions and 1 deletions

View file

@ -264,8 +264,13 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& specified_style)
computed_values.set_flex_wrap(flex_wrap.value());
auto position = specified_style.position();
if (position.has_value())
if (position.has_value()) {
computed_values.set_position(position.value());
if (position.value() == CSS::Position::Absolute) {
m_has_definite_width = true;
m_has_definite_height = true;
}
}
auto text_align = specified_style.text_align();
if (text_align.has_value())
@ -310,9 +315,15 @@ void NodeWithStyle::apply_style(const CSS::StyleProperties& specified_style)
computed_values.set_background_color(specified_style.color_or_fallback(CSS::PropertyID::BackgroundColor, document(), Color::Transparent));
computed_values.set_z_index(specified_style.z_index());
if (auto width = specified_style.property(CSS::PropertyID::Width); width.has_value())
m_has_definite_width = true;
computed_values.set_width(specified_style.length_or_fallback(CSS::PropertyID::Width, {}));
computed_values.set_min_width(specified_style.length_or_fallback(CSS::PropertyID::MinWidth, {}));
computed_values.set_max_width(specified_style.length_or_fallback(CSS::PropertyID::MaxWidth, {}));
if (auto height = specified_style.property(CSS::PropertyID::Height); height.has_value())
m_has_definite_height = true;
computed_values.set_height(specified_style.length_or_fallback(CSS::PropertyID::Height, {}));
computed_values.set_min_height(specified_style.length_or_fallback(CSS::PropertyID::MinHeight, {}));
computed_values.set_max_height(specified_style.length_or_fallback(CSS::PropertyID::MaxHeight, {}));