diff --git a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp index d6063ffbc0d..3f340c5a810 100644 --- a/Libraries/LibWeb/Layout/BlockFormattingContext.cpp +++ b/Libraries/LibWeb/Layout/BlockFormattingContext.cpp @@ -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; diff --git a/Tests/LibWeb/Layout/expected/block-and-inline/negative-margin-with-padding.txt b/Tests/LibWeb/Layout/expected/block-and-inline/negative-margin-with-padding.txt new file mode 100644 index 00000000000..5387fbf4f93 --- /dev/null +++ b/Tests/LibWeb/Layout/expected/block-and-inline/negative-margin-with-padding.txt @@ -0,0 +1,24 @@ +Viewport <#document> at (0,0) content-size 800x600 children: not-inline + BlockContainer at (0,0) content-size 800x56 [BFC] children: not-inline + BlockContainer at (18,18) content-size 764x20 children: not-inline + BlockContainer at (18,18) content-size 764x0 children: not-inline + BlockContainer <(anonymous)> at (18,168) content-size 764x0 children: inline + TextNode <#text> + BlockContainer 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) [0,0 800x56] overflow: [0,-72 800x240] + PaintableWithLines (BlockContainer) [8,8 784x40] overflow: [18,-72 764x240] + PaintableWithLines (BlockContainer
#a) [18,18 764x150] + PaintableWithLines (BlockContainer(anonymous)) [18,168 764x0] + PaintableWithLines (BlockContainer
#b) [18,-72 764x92] + TextPaintable (TextNode<#text>) + PaintableWithLines (BlockContainer(anonymous)) [18,20 764x18] + TextPaintable (TextNode<#text>) diff --git a/Tests/LibWeb/Layout/input/block-and-inline/negative-margin-with-padding.html b/Tests/LibWeb/Layout/input/block-and-inline/negative-margin-with-padding.html new file mode 100644 index 00000000000..5d388ce1a4c --- /dev/null +++ b/Tests/LibWeb/Layout/input/block-and-inline/negative-margin-with-padding.html @@ -0,0 +1,16 @@ + + +
+
foo
+bar