From 77e13260d0bce1141d4549826bac8e869968e435 Mon Sep 17 00:00:00 2001 From: Pu Xingyu Date: Sat, 27 May 2023 09:41:10 +0800 Subject: [PATCH] layout_2020: Specify the used cross size when replaced item is stretched If the flex item has align-self: stretch, redo layout for its contents, reating this used size as its definite cross size so that percentage-sized children can be resolved. --- components/layout_2020/flexbox/layout.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs index caf88955a60..1c8001d9b95 100644 --- a/components/layout_2020/flexbox/layout.rs +++ b/components/layout_2020/flexbox/layout.rs @@ -1003,10 +1003,17 @@ impl<'a> FlexItem<'a> { let pbm = replaced .style .padding_border_margin(flex_context.containing_block); + let box_size = used_cross_size_override.map(|size| Vec2 { + inline: replaced + .style + .content_box_size(flex_context.containing_block, &pbm) + .inline, + block: LengthOrAuto::LengthPercentage(size), + }); let size = replaced.contents.used_size_as_if_inline_element( flex_context.containing_block, &replaced.style, - None, + box_size, &pbm, ); let cross_size = flex_context.vec2_to_flex_relative(size.clone()).cross;