summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibWeb/Layout/Node.cpp13
-rw-r--r--Userland/Libraries/LibWeb/Layout/Node.h6
2 files changed, 18 insertions, 1 deletions
diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp
index 6771564ff3..e7d09efb1f 100644
--- a/Userland/Libraries/LibWeb/Layout/Node.cpp
+++ b/Userland/Libraries/LibWeb/Layout/Node.cpp
@@ -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, {}));
diff --git a/Userland/Libraries/LibWeb/Layout/Node.h b/Userland/Libraries/LibWeb/Layout/Node.h
index 20e4f3b1f0..ebd2405ea4 100644
--- a/Userland/Libraries/LibWeb/Layout/Node.h
+++ b/Userland/Libraries/LibWeb/Layout/Node.h
@@ -204,6 +204,9 @@ public:
NonnullRefPtr<NodeWithStyle> create_anonymous_wrapper() const;
+ bool has_definite_height() const { return m_has_definite_height; }
+ bool has_definite_width() const { return m_has_definite_width; }
+
protected:
NodeWithStyle(DOM::Document&, DOM::Node*, NonnullRefPtr<CSS::StyleProperties>);
NodeWithStyle(DOM::Document&, DOM::Node*, CSS::ComputedValues);
@@ -216,6 +219,9 @@ private:
RefPtr<CSS::ImageStyleValue> m_background_image;
CSS::Position m_position;
+
+ bool m_has_definite_height { false };
+ bool m_has_definite_width { false };
};
class NodeWithStyleAndBoxModelMetrics : public NodeWithStyle {