diff --git a/Libraries/LibHTML/Layout/LayoutNode.cpp b/Libraries/LibHTML/Layout/LayoutNode.cpp index b2f460a31f..dea0a68cb8 100644 --- a/Libraries/LibHTML/Layout/LayoutNode.cpp +++ b/Libraries/LibHTML/Layout/LayoutNode.cpp @@ -55,3 +55,10 @@ HitTestResult LayoutNode::hit_test(const Point& position) const }); return result; } + +const Document& LayoutNode::document() const +{ + if (is_anonymous()) + return parent()->document(); + return node()->document(); +} diff --git a/Libraries/LibHTML/Layout/LayoutNode.h b/Libraries/LibHTML/Layout/LayoutNode.h index 8663408df8..04e0205be2 100644 --- a/Libraries/LibHTML/Layout/LayoutNode.h +++ b/Libraries/LibHTML/Layout/LayoutNode.h @@ -8,10 +8,11 @@ #include #include -class Node; +class Document; class Element; class LayoutBlock; class LayoutNode; +class Node; struct HitTestResult { RefPtr layout_node; @@ -33,6 +34,8 @@ public: bool is_anonymous() const { return !m_node; } const Node* node() const { return m_node; } + const Document& document() const; + template inline void for_each_child(Callback callback) const {