LibWeb: When collapsing margins, consider border box heights

Empty boxes should be fully collapsed, but a box with border and/or
padding is not empty.

This fixes an issue where <hr> elements were getting weirdly collapsed
since they have zero content height (but some border height.)
This commit is contained in:
Andreas Kling 2021-01-02 03:46:26 +01:00
parent 5116b94114
commit bf3772362a
Notes: sideshowbarker 2024-07-19 00:12:54 +09:00
2 changed files with 7 additions and 1 deletions

View File

@ -548,7 +548,7 @@ void BlockFormattingContext::place_block_level_non_replaced_element_in_normal_fl
while (relevant_sibling != nullptr) {
if (!relevant_sibling->is_absolutely_positioned() && !relevant_sibling->is_floating()) {
collapsed_bottom_margin_of_preceding_siblings = max(collapsed_bottom_margin_of_preceding_siblings, relevant_sibling->box_model().margin.bottom);
if (relevant_sibling->height() > 0)
if (relevant_sibling->border_box_height() > 0)
break;
}
relevant_sibling = relevant_sibling->previous_sibling();

View File

@ -58,6 +58,12 @@ public:
return width() + border_box.left + border_box.right;
}
float border_box_height() const
{
auto border_box = box_model().border_box();
return height() + border_box.top + border_box.bottom;
}
Gfx::FloatRect content_box_as_relative_rect() const
{
return { m_offset, m_size };