LibWeb: Make sure that root of style updates is marked clean

The recursive style update function was written a bit strangely and
would only mark descendants of the style update root as not needing a
style update.

With this patch, all nodes in the subtree now have clean style after a
style update finishes.
This commit is contained in:
Andreas Kling 2021-10-08 01:29:18 +02:00
parent 13361bc47d
commit 5a929f12bc
Notes: sideshowbarker 2024-07-18 02:56:09 +09:00

View File

@ -452,18 +452,19 @@ void Document::update_layout()
static void update_style_recursively(DOM::Node& node)
{
node.for_each_child([&](auto& child) {
if (child.needs_style_update()) {
if (is<Element>(child))
verify_cast<Element>(child).recompute_style();
child.set_needs_style_update(false);
}
if (child.child_needs_style_update()) {
update_style_recursively(child);
child.set_child_needs_style_update(false);
}
return IterationDecision::Continue;
});
if (is<Element>(node))
static_cast<Element&>(node).recompute_style();
node.set_needs_style_update(false);
if (node.child_needs_style_update()) {
node.for_each_child([&](auto& child) {
if (child.needs_style_update())
update_style_recursively(child);
return IterationDecision::Continue;
});
}
node.set_child_needs_style_update(false);
}
void Document::update_style()