瀏覽代碼

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 年之前
父節點
當前提交
157896cc0b
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      Libraries/LibWeb/Layout/BlockFormattingContext.cpp

+ 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) {
     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
         // Collapse top margin with bottom margin of preceding siblings if needed
         float my_margin_top = box_model.margin.top.to_px(box);
         float my_margin_top = box_model.margin.top.to_px(box);