From 9a9e7039846bd613d11f2088756ea80326ae4edd Mon Sep 17 00:00:00 2001 From: Pu Xingyu Date: Wed, 17 May 2023 19:30:18 +0800 Subject: [PATCH] layout_2020: Fix target main size not get clamped in flexbox When resolving flexible lengths, the clamping result of item's target main size is not actually saved while it should. --- components/layout_2020/flexbox/layout.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs index 8826622276c..a7a2875a703 100644 --- a/components/layout_2020/flexbox/layout.rs +++ b/components/layout_2020/flexbox/layout.rs @@ -943,6 +943,8 @@ impl FlexLine<'_> { // it’s a min violation.” for (item_and_target_main_size, frozen) in items() { if violation(item_and_target_main_size) > Length::zero() { + let (item, target_main_size) = item_and_target_main_size; + target_main_size.set(item.content_min_size.main); frozen_count.set(frozen_count.get() + 1); frozen.set(true); } @@ -954,6 +956,11 @@ impl FlexLine<'_> { // it’s a max violation.” for (item_and_target_main_size, frozen) in items() { if violation(item_and_target_main_size) < Length::zero() { + let (item, target_main_size) = item_and_target_main_size; + let Some(max_size) = item.content_max_size.main else { + unreachable!() + }; + target_main_size.set(max_size); frozen_count.set(frozen_count.get() + 1); frozen.set(true); }