Kaynağa Gözat

LibWeb: Don't attempt to layout the inside of childless boxes

Some boxes cannot have children (most commonly replaced elements),
and so there is nothing meaningful inside them to layout.

We now use the can_have_children() flag to quickly skip over such boxes
instead of creating a formatting context and other pointless busywork.
Andreas Kling 3 yıl önce
ebeveyn
işleme
dfeb4550d5

+ 3 - 0
Userland/Libraries/LibWeb/Layout/FormattingContext.cpp

@@ -76,6 +76,9 @@ bool FormattingContext::creates_block_formatting_context(const Box& box)
 
 void FormattingContext::layout_inside(Box& child_box, LayoutMode layout_mode)
 {
+    if (!child_box.can_have_children())
+        return;
+
     if (is<SVGSVGBox>(child_box)) {
         SVGFormattingContext context(child_box, this);
         context.run(child_box, layout_mode);