LibWeb: Always set the Y offset of the current block in BFC

Originally part of a fix in 15103d172c, it
appears that this is no longer necessary and received a better fix in a
more recent commit. Resolves a visual regression with the ACID3 test.
This commit is contained in:
Jelle Raaijmakers 2025-05-16 17:28:40 +02:00 committed by Andreas Kling
commit 170e599bd9
Notes: github-actions[bot] 2025-05-16 18:34:21 +00:00
3 changed files with 41 additions and 3 deletions

View file

@ -817,9 +817,7 @@ void BlockFormattingContext::layout_block_level_box(Box const& box, BlockContain
if (!m_margin_state.box_last_in_flow_child_margin_bottom_collapsed) {
m_margin_state.reset();
}
auto box_height = box_state.offset.y() + box_state.content_height() + box_state.border_box_bottom();
if (!m_y_offset_of_current_block_container.has_value() || box_height > m_y_offset_of_current_block_container.value())
m_y_offset_of_current_block_container = box_height;
m_y_offset_of_current_block_container = box_state.offset.y() + box_state.content_height() + box_state.border_box_bottom();
}
m_margin_state.box_last_in_flow_child_margin_bottom_collapsed = false;

View file

@ -0,0 +1,24 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x56 [BFC] children: not-inline
BlockContainer <body> at (18,18) content-size 764x20 children: not-inline
BlockContainer <div#a> at (18,18) content-size 764x0 children: not-inline
BlockContainer <(anonymous)> at (18,168) content-size 764x0 children: inline
TextNode <#text>
BlockContainer <div#b> at (18,-72) content-size 764x92 children: inline
frag 0 from TextNode start: 0, length: 3, rect: [18,-72 135.78125x92] baseline: 69.984375
"foo"
TextNode <#text>
BlockContainer <(anonymous)> at (18,20) content-size 764x18 children: inline
frag 0 from TextNode start: 1, length: 3, rect: [18,20 27.640625x18] baseline: 13.796875
"bar"
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600] overflow: [0,-72 800x672]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x56] overflow: [0,-72 800x240]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x40] overflow: [18,-72 764x240]
PaintableWithLines (BlockContainer<DIV>#a) [18,18 764x150]
PaintableWithLines (BlockContainer(anonymous)) [18,168 764x0]
PaintableWithLines (BlockContainer<DIV>#b) [18,-72 764x92]
TextPaintable (TextNode<#text>)
PaintableWithLines (BlockContainer(anonymous)) [18,20 764x18]
TextPaintable (TextNode<#text>)

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<style>
body {
border: 10px solid red;
}
#a {
padding-bottom: 150px;
}
#b {
font-size: 5em;
margin: -240px 0 0;
}
</style>
<div id="a"></div>
<div id="b">foo</div>
bar