From 7f2362643c4a0037a7aa3310c03f966ae7b084c8 Mon Sep 17 00:00:00 2001 From: stelar7 Date: Thu, 5 Jun 2025 11:58:14 +0200 Subject: [PATCH] LibWeb: Use a BFC for MathML While this is not correct, it makes MathML text render atleast --- Libraries/LibWeb/Layout/FormattingContext.cpp | 4 +-- .../css-namespace-tag-name-selector.txt | 31 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Libraries/LibWeb/Layout/FormattingContext.cpp b/Libraries/LibWeb/Layout/FormattingContext.cpp index fcfe36ca440..8791523330b 100644 --- a/Libraries/LibWeb/Layout/FormattingContext.cpp +++ b/Libraries/LibWeb/Layout/FormattingContext.cpp @@ -148,8 +148,8 @@ Optional FormattingContext::formatting_context_type_cre return Type::Grid; if (display.is_math_inside()) - // HACK: Instead of crashing, create a dummy formatting context that does nothing. - return Type::InternalDummy; + // FIXME: We should create a MathML-specific formatting context here, but for now use a BFC, so _something_ is displayed + return Type::Block; if (creates_block_formatting_context(box)) return Type::Block; diff --git a/Tests/LibWeb/Layout/expected/css-namespace-tag-name-selector.txt b/Tests/LibWeb/Layout/expected/css-namespace-tag-name-selector.txt index c2a205738a0..f6ba7ee2ef1 100644 --- a/Tests/LibWeb/Layout/expected/css-namespace-tag-name-selector.txt +++ b/Tests/LibWeb/Layout/expected/css-namespace-tag-name-selector.txt @@ -1,39 +1,42 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline BlockContainer at (0,0) content-size 800x600 [BFC] children: not-inline - BlockContainer at (8,8) content-size 784x204 children: not-inline - BlockContainer <(anonymous)> at (8,8) content-size 784x156 children: inline + BlockContainer at (8,8) content-size 784x274 children: not-inline + BlockContainer <(anonymous)> at (8,8) content-size 784x226 children: inline frag 0 from SVGSVGBox start: 0, length: 0, rect: [9,9 300x150] baseline: 152 frag 1 from TextNode start: 0, length: 1, rect: [310,146 8x18] baseline: 13.796875 " " - frag 2 from BlockContainer start: 0, length: 0, rect: [319,51 0x108] baseline: 110 + frag 2 from BlockContainer start: 0, length: 0, rect: [319,123 102x110] baseline: 38 SVGSVGBox at (9,9) content-size 300x150 [SVG] children: not-inline SVGGraphicsBox at (33.765625,32.4375) content-size 188.71875x60.15625 children: not-inline SVGTextBox at (33.765625,32.4375) content-size 188.71875x60.15625 children: inline TextNode <#text> TextNode <#text> - BlockContainer at (319,51) content-size 0x108 children: not-inline - BlockContainer at (319,51) content-size 100x100 children: inline + BlockContainer at (319,123) content-size 102x110 [BFC] children: not-inline + BlockContainer at (320,124) content-size 100x100 [BFC] children: inline + frag 0 from TextNode start: 0, length: 5, rect: [320,124 99.484375x46] baseline: 35 + "Hello" TextNode <#text> TextNode <#text> - BlockContainer
at (9,165) content-size 782x46 children: inline + BlockContainer
at (9,235) content-size 782x46 children: inline InlineNode - frag 0 from TextNode start: 0, length: 5, rect: [10,165 99.484375x46] baseline: 35 + frag 0 from TextNode start: 0, length: 5, rect: [10,235 99.484375x46] baseline: 35 "Hello" TextNode <#text> - BlockContainer <(anonymous)> at (8,212) content-size 784x0 children: inline + BlockContainer <(anonymous)> at (8,282) content-size 784x0 children: inline TextNode <#text> ViewportPaintable (Viewport<#document>) [0,0 800x600] PaintableWithLines (BlockContainer) [0,0 800x600] - PaintableWithLines (BlockContainer) [8,8 784x204] - PaintableWithLines (BlockContainer(anonymous)) [8,8 784x156] + PaintableWithLines (BlockContainer) [8,8 784x274] + PaintableWithLines (BlockContainer(anonymous)) [8,8 784x226] SVGSVGPaintable (SVGSVGBox) [8,8 302x152] SVGGraphicsPaintable (SVGGraphicsBox) [33.765625,32.4375 188.71875x60.15625] SVGPathPaintable (SVGTextBox) [33.765625,32.4375 188.71875x60.15625] TextPaintable (TextNode<#text>) - PaintableWithLines (BlockContainer) [318,50 2x110] overflow: [319,51 100x100] - PaintableWithLines (BlockContainer) [319,51 100x100] - PaintableWithLines (BlockContainer
) [8,164 784x48] + PaintableWithLines (BlockContainer) [318,122 104x112] + PaintableWithLines (BlockContainer) [319,123 102x102] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer