Files
ladybird/Tests/LibWeb/Layout/expected/block-and-inline/float-with-inline-contents-hoisted.txt
Jelle Raaijmakers 6f800caeaa LibWeb: Don't mess up the order of nodes when wrapping inline contents
Whenever we introduce a block element in a container that at that point
has only had inline children, we create an anonymous wrapper for all the
inline elements so we can keep the invariant that each container
contains either inline or non-inline children. For some reason, we
ignore all the out-of-flow nodes since they are layed out separately and
it was thought that this shouldn't matter.

However, if we are dealing with inline blocks and floating blocks, the
order of the inline contents _including_ out-of-flow nodes becomes very
important: floating blocks need to take the order of nodes into account
when positioning themselves.

Fix this by simply hoisting the out-of-flow nodes into the anonymous
wrapper as well.

Fixes the order of blocks in #4212. The gap is still not present.
2025-04-24 19:12:50 +02:00

41 lines
2.6 KiB
Plaintext

Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x308 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x103 children: not-inline
BlockContainer <(anonymous)> at (8,8) content-size 784x103 children: inline
frag 0 from BlockContainer start: 0, length: 0, rect: [8,8 100x100] baseline: 100
frag 1 from TextNode start: 0, length: 1, rect: [108,94 8x17] baseline: 13.296875
" "
frag 2 from BlockContainer start: 0, length: 0, rect: [116,8 100x100] baseline: 100
TextNode <#text>
BlockContainer <div.a> at (8,8) content-size 100x100 inline-block [BFC] children: not-inline
BlockContainer <div.box.green> at (8,8) content-size 100x100 children: not-inline
TextNode <#text>
BlockContainer <div.b> at (8,108) content-size 784x100 floating [BFC] children: not-inline
BlockContainer <div.box.blue> at (8,108) content-size 100x100 children: not-inline
TextNode <#text>
BlockContainer <div.a> at (116,8) content-size 100x100 inline-block [BFC] children: not-inline
BlockContainer <div.box.green> at (116,8) content-size 100x100 children: not-inline
TextNode <#text>
BlockContainer <div.b> at (8,208) content-size 784x100 floating [BFC] children: not-inline
BlockContainer <div.box.blue> at (8,208) content-size 100x100 children: not-inline
TextNode <#text>
BlockContainer <div> at (8,111) content-size 784x0 children: not-inline
BlockContainer <(anonymous)> at (8,111) content-size 784x0 children: inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x308]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x103]
PaintableWithLines (BlockContainer(anonymous)) [8,8 784x103]
PaintableWithLines (BlockContainer<DIV>.a) [8,8 100x100]
PaintableWithLines (BlockContainer<DIV>.box.green) [8,8 100x100]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer<DIV>.b) [8,108 784x100]
PaintableWithLines (BlockContainer<DIV>.box.blue) [8,108 100x100]
PaintableWithLines (BlockContainer<DIV>.a) [116,8 100x100]
PaintableWithLines (BlockContainer<DIV>.box.green) [116,8 100x100]
PaintableWithLines (BlockContainer<DIV>.b) [8,208 784x100]
PaintableWithLines (BlockContainer<DIV>.box.blue) [8,208 100x100]
PaintableWithLines (BlockContainer<DIV>) [8,111 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,111 784x0]