mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
layout: Fix intrinsic contributions of indefinite stretch
keyword (#36030)
In #35630 I treated an indefinite `stretch` as 0px on min sizing properties, and as `none` on max sizing properties. However, this was only for final layout sizes, I forgot about intrinsic contributions. Blink already modified the relevant test, I'm just reordering it a bit since we are no longer treating `stretch` as `fit-content`, so it seems better to test it at the end. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
99d4baa533
commit
09fe51f55a
4 changed files with 21 additions and 38 deletions
|
@ -172,7 +172,7 @@ pub(crate) fn outer_inline(
|
|||
};
|
||||
get_content_size(&constraint_space)
|
||||
});
|
||||
let resolve_non_initial = |inline_size| {
|
||||
let resolve_non_initial = |inline_size, stretch_values| {
|
||||
Some(match inline_size {
|
||||
Size::Initial => return None,
|
||||
Size::Numeric(numeric) => (numeric, numeric, false),
|
||||
|
@ -186,24 +186,25 @@ pub(crate) fn outer_inline(
|
|||
content_size.sizes.max_content,
|
||||
content_size.depends_on_block_constraints,
|
||||
),
|
||||
Size::Stretch | Size::FitContent => (
|
||||
Size::FitContent => (
|
||||
content_size.sizes.min_content,
|
||||
content_size.sizes.max_content,
|
||||
content_size.depends_on_block_constraints,
|
||||
),
|
||||
Size::Stretch => return stretch_values,
|
||||
})
|
||||
};
|
||||
let (mut preferred_min_content, preferred_max_content, preferred_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.preferred)
|
||||
.unwrap_or_else(|| resolve_non_initial(Size::FitContent).unwrap());
|
||||
resolve_non_initial(content_box_sizes.inline.preferred, None)
|
||||
.unwrap_or_else(|| resolve_non_initial(Size::FitContent, None).unwrap());
|
||||
let (mut min_min_content, mut min_max_content, mut min_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.min).unwrap_or((
|
||||
auto_minimum.inline,
|
||||
auto_minimum.inline,
|
||||
false,
|
||||
));
|
||||
resolve_non_initial(
|
||||
content_box_sizes.inline.min,
|
||||
Some((Au::zero(), Au::zero(), false)),
|
||||
)
|
||||
.unwrap_or((auto_minimum.inline, auto_minimum.inline, false));
|
||||
let (mut max_min_content, max_max_content, max_depends_on_block_constraints) =
|
||||
resolve_non_initial(content_box_sizes.inline.max)
|
||||
resolve_non_initial(content_box_sizes.inline.max, None)
|
||||
.map(|(min_content, max_content, depends_on_block_constraints)| {
|
||||
(
|
||||
Some(min_content),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue