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.
This commit is contained in:
Pu Xingyu 2023-05-17 19:30:18 +08:00
parent c5d31c3ab6
commit 9a9e703984

View file

@ -943,6 +943,8 @@ impl FlexLine<'_> {
// its 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<'_> {
// its 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);
}