From 97b5230413f85fad22c05578f1d41c039a039617 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 18 Sep 2022 17:40:13 +0200 Subject: [PATCH] LibWeb: Subtract border & padding when using flex line size as item size The flex line cross size includes the margin boxes of items, so when we're taking the flex line's cross size to use as an item cross size, we have to subtract the margin, border padding from both sides. Previous we only subtracted the cross margins, which led to oversized items in some cases. --- Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp index f2b8ca9338..0623e43956 100644 --- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp @@ -1135,7 +1135,10 @@ void FlexFormattingContext::determine_used_cross_size_of_each_flex_item() && !flex_item->margins.cross_before_is_auto && !flex_item->margins.cross_after_is_auto) { // FIXME: Clamp to the item's used min and max cross sizes. - flex_item->cross_size = flex_line.cross_size - flex_item->margins.cross_before - flex_item->margins.cross_after; + flex_item->cross_size = flex_line.cross_size + - flex_item->margins.cross_before - flex_item->margins.cross_after + - flex_item->padding.cross_before - flex_item->padding.cross_after + - flex_item->borders.cross_before - flex_item->borders.cross_after; } else { // Otherwise, the used cross size is the item’s hypothetical cross size. flex_item->cross_size = flex_item->hypothetical_cross_size;