1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:37:35 +00:00

LibWeb: Recurse into shadow trees when updating style

The style update mechanism was happily ignoring shadow subtrees.
Fix this by checking if an element has a shadow root, and recursing into
it if needed.
This commit is contained in:
Andreas Kling 2022-03-14 12:54:41 +01:00
parent 5d941ddf3a
commit 32dd4bf1b9

View file

@ -602,6 +602,12 @@ static void update_style_recursively(DOM::Node& node)
node.set_needs_style_update(false);
if (node.child_needs_style_update()) {
if (node.is_element()) {
if (auto* shadow_root = static_cast<DOM::Element&>(node).shadow_root()) {
if (shadow_root->needs_style_update() || shadow_root->child_needs_style_update())
update_style_recursively(*shadow_root);
}
}
node.for_each_child([&](auto& child) {
if (child.needs_style_update() || child.child_needs_style_update())
update_style_recursively(child);