summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-10-09 21:33:34 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-10-09 21:33:34 +0200
commit159507f2a6a3a8b4ffd2eab68e26c7ec86197420 (patch)
treec1b6309b3cf5bceca0f72be63bd6573374b4a2c4
parentfdbad6284c6884a3d5b0b1c125b26711fbe585f8 (diff)
downloadserenity-159507f2a6a3a8b4ffd2eab68e26c7ec86197420.zip
LibHTML: Move is_ancestor_of() from LayoutNode to TreeNode
This way it becomes available to all the different TreeNode subclasses.
-rw-r--r--Libraries/LibHTML/Layout/LayoutNode.h11
-rw-r--r--Libraries/LibHTML/TreeNode.h13
2 files changed, 13 insertions, 11 deletions
diff --git a/Libraries/LibHTML/Layout/LayoutNode.h b/Libraries/LibHTML/Layout/LayoutNode.h
index 78b77dd850..38cd663d8d 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<typename Callback>
void for_each_fragment_of_this(Callback);
@@ -130,12 +128,3 @@ inline const LayoutNodeWithStyle* LayoutNode::parent() const
{
return static_cast<const LayoutNodeWithStyle*>(TreeNode<LayoutNode>::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 467ab83cfb..f384dd0a1c 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<T> node, bool call_inserted_into = true);
void append_child(NonnullRefPtr<T> node, bool call_inserted_into = true);
void donate_all_children_to(T& node);
@@ -98,3 +100,14 @@ inline void TreeNode<T>::donate_all_children_to(T& node)
m_first_child = nullptr;
m_last_child = nullptr;
}
+
+
+template<typename T>
+inline bool TreeNode<T>::is_ancestor_of(const TreeNode<T>& other) const
+{
+ for (auto* ancestor = other.parent(); ancestor; ancestor = ancestor->parent()) {
+ if (ancestor == this)
+ return true;
+ }
+ return false;
+}