LibWeb: Never split SVG foreignObject for inline continuations

This would produce a bizarre layout tree and certainly not yield
expected results.
This commit is contained in:
Andreas Kling 2025-07-07 19:47:41 +02:00 committed by Andreas Kling
commit f343a418b2
Notes: github-actions[bot] 2025-07-09 12:37:42 +00:00
2 changed files with 18 additions and 23 deletions

View file

@ -1413,6 +1413,10 @@ bool NodeWithStyleAndBoxModelMetrics::should_create_inline_continuation() const
if (is_svg_box()) if (is_svg_box())
return false; return false;
// SVGForeignObjectBoxes should never be split.
if (is_svg_foreign_object_box())
return false;
return true; return true;
} }

View file

@ -1,31 +1,22 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x316 [BFC] children: not-inline BlockContainer <html> at (0,0) content-size 800x116 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x300 children: not-inline BlockContainer <body> at (8,8) content-size 784x100 children: inline
BlockContainer <(anonymous)> at (8,8) content-size 784x100 children: inline frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,8 100x100] baseline: 13.796875
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,8 100x100] baseline: 100 SVGSVGBox <svg> at (8,8) content-size 100x100 [SVG] children: not-inline
SVGSVGBox <svg> at (8,8) content-size 100x100 [SVG] children: inline SVGForeignObjectBox <foreignObject> at (8,8) content-size 100x100 [BFC] children: not-inline
BlockContainer <(anonymous)> at (8,108) content-size 784x100 children: not-inline continuation BlockContainer <div> at (8,8) content-size 100x18 children: inline
SVGForeignObjectBox <foreignObject> at (8,108) content-size 100x100 [BFC] children: not-inline frag 0 from TextNode start: 0, length: 3, rect: [8,8 27.15625x18] baseline: 13.796875
BlockContainer <div> at (8,108) content-size 100x18 children: inline
frag 0 from TextNode start: 0, length: 3, rect: [8,108 27.15625x18] baseline: 13.796875
"foo" "foo"
TextNode <#text> TextNode <#text>
BlockContainer <(anonymous)> at (8,208) content-size 784x100 children: inline
frag 0 from SVGSVGBox start: 0, length: 0, rect: [8,208 100x100] baseline: 100
SVGSVGBox <svg> at (8,208) content-size 100x100 [SVG] children: not-inline continuation
ViewportPaintable (Viewport<#document>) [0,0 800x600] ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x316] PaintableWithLines (BlockContainer<HTML>) [0,0 800x116]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x300] PaintableWithLines (BlockContainer<BODY>) [8,8 784x100]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x100] SVGSVGPaintable (SVGSVGBox<svg>) [8,8 100x100]
SVGSVGPaintable (SVGSVGBox<svg>) [8,8 100x100] SVGForeignObjectPaintable (SVGForeignObjectBox<foreignObject>) [8,8 100x100]
PaintableWithLines (BlockContainer(anonymous)) [8,108 784x100] PaintableWithLines (BlockContainer<DIV>) [8,8 100x18]
SVGForeignObjectPaintable (SVGForeignObjectBox<foreignObject>) [8,108 100x100]
PaintableWithLines (BlockContainer<DIV>) [8,108 100x18]
TextPaintable (TextNode<#text>) TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [8,208 784x100]
SVGSVGPaintable (SVGSVGBox<svg>) [8,208 100x100]
SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto) SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto)
SC for BlockContainer<HTML> [0,0 800x316] [children: 1] (z-index: auto) SC for BlockContainer<HTML> [0,0 800x116] [children: 1] (z-index: auto)
SC for SVGForeignObjectBox<foreignObject> [8,108 100x100] [children: 0] (z-index: auto) SC for SVGForeignObjectBox<foreignObject> [8,8 100x100] [children: 0] (z-index: auto)