diff --git a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp index 382b7883ae2..dd157a6f6d6 100644 --- a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -340,7 +340,18 @@ void TreeBuilder::create_layout_tree(DOM::Node& dom_node, TreeBuilder::Context& display = style->display(); if (display.is_none()) return; - layout_node = element.create_layout_node(*style); + if (context.layout_svg_mask_or_clip_path) { + if (is(dom_node)) + layout_node = document.heap().allocate_without_realm(document, static_cast(dom_node), *style); + else if (is(dom_node)) + layout_node = document.heap().allocate_without_realm(document, static_cast(dom_node), *style); + else + VERIFY_NOT_REACHED(); + // Only layout direct uses of SVG masks/clipPaths. + context.layout_svg_mask_or_clip_path = false; + } else { + layout_node = element.create_layout_node(*style); + } } else if (is(dom_node)) { style = style_computer.create_document_style(); display = style->display(); @@ -350,17 +361,6 @@ void TreeBuilder::create_layout_tree(DOM::Node& dom_node, TreeBuilder::Context& display = CSS::Display(CSS::DisplayOutside::Inline, CSS::DisplayInside::Flow); } - if (context.layout_svg_mask_or_clip_path) { - if (is(dom_node)) - layout_node = document.heap().allocate_without_realm(document, static_cast(dom_node), *style); - else if (is(dom_node)) - layout_node = document.heap().allocate_without_realm(document, static_cast(dom_node), *style); - else - VERIFY_NOT_REACHED(); - // Only layout direct uses of SVG masks/clipPaths. - context.layout_svg_mask_or_clip_path = false; - } - if (!layout_node) return;