Prechádzať zdrojové kódy

LibWeb: Block layout should account for vertical border space

We were not accounting for space occupied by borders when computing
the vertical (y) position of blocks. This meant that blocks with wide
top/bottom borders could bleed into each other incorrectly.

Fix this by using the combined padding+border geometry instead of just
the padding when placing blocks on the y axis.
Andreas Kling 4 rokov pred
rodič
commit
157896cc0b

+ 3 - 1
Libraries/LibWeb/Layout/BlockFormattingContext.cpp

@@ -499,7 +499,9 @@ void BlockFormattingContext::place_block_level_non_replaced_element_in_normal_fl
     }
 
     if (relevant_sibling) {
-        y += relevant_sibling->effective_offset().y() + relevant_sibling->height() + relevant_sibling->box_model().padding.bottom.to_px(*relevant_sibling);
+        y += relevant_sibling->effective_offset().y()
+            + relevant_sibling->height()
+            + relevant_sibling->box_model().border_box(*relevant_sibling).bottom;
 
         // Collapse top margin with bottom margin of preceding siblings if needed
         float my_margin_top = box_model.margin.top.to_px(box);