diff --git a/LibHTML/Dump.cpp b/LibHTML/Dump.cpp
index 21339e39b1..8fbaec164d 100644
--- a/LibHTML/Dump.cpp
+++ b/LibHTML/Dump.cpp
@@ -10,7 +10,7 @@ void dump_tree(const Node& node)
{
static int indent = 0;
for (int i = 0; i < indent; ++i)
- printf(" ");
+ printf(" ");
if (node.is_document()) {
printf("*Document*\n");
} else if (node.is_element()) {
@@ -31,17 +31,36 @@ void dump_tree(const Node& node)
--indent;
}
-void dump_tree(const LayoutNode& node)
+void dump_tree(const LayoutNode& layout_node)
{
static int indent = 0;
for (int i = 0; i < indent; ++i)
- printf(" ");
- printf("%s{%p}", node.class_name(), &node);
- if (node.is_text())
- printf(" \"%s\"", static_cast(node).text().characters());
+ printf(" ");
+
+ String tag_name;
+ if (layout_node.is_anonymous())
+ tag_name = "(anonymous)";
+ else if (layout_node.node()->is_text())
+ tag_name = "#text";
+ else if (layout_node.node()->is_document())
+ tag_name = "#document";
+ else if (layout_node.node()->is_element())
+ tag_name = static_cast(*layout_node.node()).tag_name();
+ else
+ tag_name = "???";
+
+ printf("%s {%s} at (%d,%d) size %dx%d",
+ layout_node.class_name(),
+ tag_name.characters(),
+ layout_node.rect().x(),
+ layout_node.rect().y(),
+ layout_node.rect().width(),
+ layout_node.rect().height());
+ if (layout_node.is_text())
+ printf(" \"%s\"", static_cast(layout_node).text().characters());
printf("\n");
++indent;
- node.for_each_child([](auto& child) {
+ layout_node.for_each_child([](auto& child) {
dump_tree(child);
});
--indent;
diff --git a/LibHTML/Layout/LayoutNode.h b/LibHTML/Layout/LayoutNode.h
index cc83db6fd9..0e47154992 100644
--- a/LibHTML/Layout/LayoutNode.h
+++ b/LibHTML/Layout/LayoutNode.h
@@ -2,6 +2,7 @@
#include
#include
+#include
class Node;
@@ -13,6 +14,10 @@ public:
void release();
int retain_count() const { return m_retain_count; }
+ const Rect& rect() const { return m_rect; }
+ void set_rect(const Rect& rect) { m_rect = rect; }
+
+ bool is_anonymous() const { return !m_node; }
const Node* node() const { return m_node; }
LayoutNode* next_sibling() { return m_next_sibling; }
@@ -50,5 +55,5 @@ private:
LayoutNode* m_last_child { nullptr };
LayoutNode* m_next_sibling { nullptr };
LayoutNode* m_previous_sibling { nullptr };
+ Rect m_rect;
};
-