Parcourir la source

LibWeb: Add NonDocumentTypeChildNode::next_element_in_pre_order()

This is handy for traversing only the elements in a document.
Andreas Kling il y a 5 ans
Parent
commit
7698feb8ce
1 fichiers modifiés avec 10 ajouts et 0 suppressions
  1. 10 0
      Libraries/LibWeb/DOM/NonDocumentTypeChildNode.h

+ 10 - 0
Libraries/LibWeb/DOM/NonDocumentTypeChildNode.h

@@ -53,8 +53,18 @@ public:
         return nullptr;
     }
 
+    Element* next_element_in_pre_order()
+    {
+        for (auto* node = static_cast<NodeType*>(this)->next_in_pre_order(); node; node = node->next_in_pre_order()) {
+            if (is<Element>(*node))
+                return downcast<Element>(node);
+        }
+        return nullptr;
+    }
+
     const Element* previous_element_sibling() const { return const_cast<NonDocumentTypeChildNode*>(this)->previous_element_sibling(); }
     const Element* next_element_sibling() const { return const_cast<NonDocumentTypeChildNode*>(this)->next_element_sibling(); }
+    const Element* next_element_in_pre_order() const { return const_cast<NonDocumentTypeChildNode*>(this)->next_element_in_pre_order(); }
 
 protected:
     NonDocumentTypeChildNode() { }