diff --git a/LibHTML/Frame.cpp b/LibHTML/Frame.cpp index 0c060574ed..6936d0d2c2 100644 --- a/LibHTML/Frame.cpp +++ b/LibHTML/Frame.cpp @@ -61,14 +61,14 @@ void Frame::layout() auto create_layout_node = [](const StyledNode& styled_node) -> RefPtr { if (styled_node.node() && styled_node.node()->is_document()) - return adopt(*new LayoutDocument(static_cast(*styled_node.node()))); + return adopt(*new LayoutDocument(static_cast(*styled_node.node()), styled_node)); switch (styled_node.display()) { case Display::None: return nullptr; case Display::Block: - return adopt(*new LayoutBlock(*styled_node.node())); + return adopt(*new LayoutBlock(*styled_node.node(), styled_node)); case Display::Inline: - return adopt(*new LayoutInline(*styled_node.node())); + return adopt(*new LayoutInline(*styled_node.node(), styled_node)); default: ASSERT_NOT_REACHED(); } diff --git a/LibHTML/Layout/LayoutBlock.cpp b/LibHTML/Layout/LayoutBlock.cpp index 95fc1e5bd7..602f09dfa5 100644 --- a/LibHTML/Layout/LayoutBlock.cpp +++ b/LibHTML/Layout/LayoutBlock.cpp @@ -1,8 +1,8 @@ #include #include -LayoutBlock::LayoutBlock(const Node& node) - : LayoutNode(&node) +LayoutBlock::LayoutBlock(const Node& node, const StyledNode& styled_node) + : LayoutNode(&node, styled_node) { } diff --git a/LibHTML/Layout/LayoutBlock.h b/LibHTML/Layout/LayoutBlock.h index 86a117feb2..007b8c5170 100644 --- a/LibHTML/Layout/LayoutBlock.h +++ b/LibHTML/Layout/LayoutBlock.h @@ -6,7 +6,7 @@ class Element; class LayoutBlock : public LayoutNode { public: - explicit LayoutBlock(const Node&); + LayoutBlock(const Node&, const StyledNode&); virtual ~LayoutBlock() override; virtual const char* class_name() const override { return "LayoutBlock"; } diff --git a/LibHTML/Layout/LayoutDocument.cpp b/LibHTML/Layout/LayoutDocument.cpp index 9e0a114cdf..ef57d8e991 100644 --- a/LibHTML/Layout/LayoutDocument.cpp +++ b/LibHTML/Layout/LayoutDocument.cpp @@ -1,7 +1,7 @@ #include -LayoutDocument::LayoutDocument(const Document& document) - : LayoutBlock(document) +LayoutDocument::LayoutDocument(const Document& document, const StyledNode& styled_node) + : LayoutBlock(document, styled_node) { } diff --git a/LibHTML/Layout/LayoutDocument.h b/LibHTML/Layout/LayoutDocument.h index 11e1e48330..8b49a1ab8b 100644 --- a/LibHTML/Layout/LayoutDocument.h +++ b/LibHTML/Layout/LayoutDocument.h @@ -5,7 +5,7 @@ class LayoutDocument final : public LayoutBlock { public: - explicit LayoutDocument(const Document&); + LayoutDocument(const Document&, const StyledNode&); virtual ~LayoutDocument() override; const Document& node() const { return static_cast(*LayoutNode::node()); } diff --git a/LibHTML/Layout/LayoutInline.cpp b/LibHTML/Layout/LayoutInline.cpp index ac68b2818c..833dc0b1d9 100644 --- a/LibHTML/Layout/LayoutInline.cpp +++ b/LibHTML/Layout/LayoutInline.cpp @@ -1,8 +1,8 @@ #include #include -LayoutInline::LayoutInline(const Node& node) - : LayoutNode(&node) +LayoutInline::LayoutInline(const Node& node, const StyledNode& styled_node) + : LayoutNode(&node, styled_node) { } diff --git a/LibHTML/Layout/LayoutInline.h b/LibHTML/Layout/LayoutInline.h index 73def302cb..1032ce8dc6 100644 --- a/LibHTML/Layout/LayoutInline.h +++ b/LibHTML/Layout/LayoutInline.h @@ -6,7 +6,7 @@ class Element; class LayoutInline : public LayoutNode { public: - explicit LayoutInline(const Node&); + LayoutInline(const Node&, const StyledNode&); virtual ~LayoutInline() override; virtual const char* class_name() const override { return "LayoutInline"; } diff --git a/LibHTML/Layout/LayoutNode.cpp b/LibHTML/Layout/LayoutNode.cpp index ba1f8ae896..00a2fc44f4 100644 --- a/LibHTML/Layout/LayoutNode.cpp +++ b/LibHTML/Layout/LayoutNode.cpp @@ -1,8 +1,10 @@ #include #include +#include -LayoutNode::LayoutNode(const Node* node) +LayoutNode::LayoutNode(const Node* node, const StyledNode& styled_node) : m_node(node) + , m_styled_node(styled_node) { } diff --git a/LibHTML/Layout/LayoutNode.h b/LibHTML/Layout/LayoutNode.h index 49a7b84746..d049d37913 100644 --- a/LibHTML/Layout/LayoutNode.h +++ b/LibHTML/Layout/LayoutNode.h @@ -8,6 +8,7 @@ class Node; class LayoutBlock; +class StyledNode; class LayoutNode : public TreeNode { public: @@ -46,10 +47,11 @@ public: const LayoutBlock* containing_block() const; protected: - explicit LayoutNode(const Node*); + explicit LayoutNode(const Node*, const StyledNode&); private: const Node* m_node { nullptr }; + NonnullRefPtr m_styled_node; LayoutStyle m_style; Rect m_rect; diff --git a/LibHTML/Layout/LayoutText.cpp b/LibHTML/Layout/LayoutText.cpp index bddac63e39..9ddd4879a9 100644 --- a/LibHTML/Layout/LayoutText.cpp +++ b/LibHTML/Layout/LayoutText.cpp @@ -1,8 +1,8 @@ #include #include -LayoutText::LayoutText(const Text& text) - : LayoutNode(&text) +LayoutText::LayoutText(const Text& text, const StyledNode& styled_node) + : LayoutNode(&text, styled_node) { } diff --git a/LibHTML/Layout/LayoutText.h b/LibHTML/Layout/LayoutText.h index 01022d6175..5ad24fa839 100644 --- a/LibHTML/Layout/LayoutText.h +++ b/LibHTML/Layout/LayoutText.h @@ -5,7 +5,7 @@ class LayoutText : public LayoutNode { public: - explicit LayoutText(const Text&); + LayoutText(const Text&, const StyledNode&); virtual ~LayoutText() override; const Text& node() const { return static_cast(*LayoutNode::node()); }