From 4ebb57298b72e39d6a7439ffaf343d040fa6b2ca Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 29 Nov 2020 16:11:54 +0100 Subject: [PATCH] LibWeb: Allow building partial layout trees We can now build partial layout trees (this happens for example when an element's "display" property is programmatically toggled from "none" to something else.) --- Libraries/LibWeb/Layout/TreeBuilder.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Libraries/LibWeb/Layout/TreeBuilder.cpp index f16c281a75..de9885cab5 100644 --- a/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -140,9 +140,10 @@ void TreeBuilder::create_layout_tree(DOM::Node& dom_node) RefPtr TreeBuilder::build(DOM::Node& dom_node) { - if (!is(dom_node) && dom_node.has_children()) { - dbg() << "FIXME: Support building partial layout trees."; - return nullptr; + if (dom_node.parent()) { + // We're building a partial layout tree, so start by building up the stack of parent layout nodes. + for (auto* ancestor = dom_node.parent()->layout_node(); ancestor; ancestor = ancestor->parent()) + m_parent_stack.prepend(ancestor); } create_layout_tree(dom_node);