layout: Fix align-content on stretched row flex containers (#37024)

Fixes a regression from #36973, which didn't take into account that
stretching flex items affects their final block size when the cross axis
is the block axis.

Testing: Adding new test
Fixes: #37023

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2025-05-16 12:15:16 -07:00 committed by GitHub
parent c1a70f4eb2
commit 78f3f455dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 38 additions and 4 deletions

View file

@ -1929,7 +1929,11 @@ impl FlexItem<'_> {
}
}
let lazy_block_size = if cross_axis_is_item_block_axis {
let lazy_block_size = if !cross_axis_is_item_block_axis {
used_main_size.into()
} else if let Some(cross_size) = used_cross_size_override {
cross_size.into()
} else {
// This means that an auto size with stretch alignment will behave different than
// a stretch size. That's not what the spec says, but matches other browsers.
// To be discussed in https://github.com/w3c/csswg-drafts/issues/11784.
@ -1946,8 +1950,6 @@ impl FlexItem<'_> {
stretch_size,
self.is_table(),
)
} else {
used_main_size.into()
};
let layout = non_replaced.layout(