Ver Fonte

LibWeb: Add DOMTreeModel::index_for_node()

This is needed for telling the DOM Inspector to select a given Node.
Sam Atkins há 4 anos atrás
pai
commit
8eef509c1b

+ 16 - 0
Userland/Libraries/LibWeb/DOMTreeModel.cpp

@@ -131,4 +131,20 @@ GUI::Variant DOMTreeModel::data(const GUI::ModelIndex& index, GUI::ModelRole rol
     return {};
 }
 
+GUI::ModelIndex DOMTreeModel::index_for_node(DOM::Node* node) const
+{
+    if (!node)
+        return {};
+
+    DOM::Node* parent = node->parent();
+    if (!parent)
+        return {};
+
+    auto maybe_row = parent->index_of_child(*node);
+    if (maybe_row.has_value())
+        return create_index(maybe_row.value(), 0, node);
+
+    return {};
+}
+
 }

+ 2 - 0
Userland/Libraries/LibWeb/DOMTreeModel.h

@@ -26,6 +26,8 @@ public:
     virtual GUI::ModelIndex index(int row, int column, const GUI::ModelIndex& parent = GUI::ModelIndex()) const override;
     virtual GUI::ModelIndex parent_index(const GUI::ModelIndex&) const override;
 
+    GUI::ModelIndex index_for_node(DOM::Node*) const;
+
 private:
     explicit DOMTreeModel(DOM::Document&);