diff --git a/Libraries/LibHTML/Layout/LayoutNode.h b/Libraries/LibHTML/Layout/LayoutNode.h
index 78b77dd8504..38cd663d8de 100644
--- a/Libraries/LibHTML/Layout/LayoutNode.h
+++ b/Libraries/LibHTML/Layout/LayoutNode.h
@@ -81,8 +81,6 @@ public:
void set_needs_display();
- bool is_ancestor_of(const LayoutNode&) const;
-
template
void for_each_fragment_of_this(Callback);
@@ -130,12 +128,3 @@ inline const LayoutNodeWithStyle* LayoutNode::parent() const
{
return static_cast(TreeNode::parent());
}
-
-inline bool LayoutNode::is_ancestor_of(const LayoutNode& other) const
-{
- for (auto* ancestor = other.parent(); ancestor; ancestor = ancestor->parent()) {
- if (ancestor == this)
- return true;
- }
- return false;
-}
diff --git a/Libraries/LibHTML/TreeNode.h b/Libraries/LibHTML/TreeNode.h
index 467ab83cfb3..f384dd0a1c5 100644
--- a/Libraries/LibHTML/TreeNode.h
+++ b/Libraries/LibHTML/TreeNode.h
@@ -33,6 +33,8 @@ public:
const T* first_child() const { return m_first_child; }
const T* last_child() const { return m_last_child; }
+ bool is_ancestor_of(const TreeNode&) const;
+
void prepend_child(NonnullRefPtr node, bool call_inserted_into = true);
void append_child(NonnullRefPtr node, bool call_inserted_into = true);
void donate_all_children_to(T& node);
@@ -98,3 +100,14 @@ inline void TreeNode::donate_all_children_to(T& node)
m_first_child = nullptr;
m_last_child = nullptr;
}
+
+
+template
+inline bool TreeNode::is_ancestor_of(const TreeNode& other) const
+{
+ for (auto* ancestor = other.parent(); ancestor; ancestor = ancestor->parent()) {
+ if (ancestor == this)
+ return true;
+ }
+ return false;
+}