mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Obey min and max properties when computing main size of column flex (#34450)
When laying out a column flex container with an auto preferred main size, we were resolving the used main size to the intrinsic max-content size. However, we weren't clamping this amount between the min and max sizes. Signed-off-by: Oriol Brufau <obrufau@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
e146417b42
commit
ad448da7de
8 changed files with 12 additions and 171 deletions
|
@ -636,8 +636,8 @@ impl FlexContainer {
|
||||||
containing_block: &ContainingBlock,
|
containing_block: &ContainingBlock,
|
||||||
containing_block_for_container: &ContainingBlock,
|
containing_block_for_container: &ContainingBlock,
|
||||||
) -> IndependentLayout {
|
) -> IndependentLayout {
|
||||||
let (container_min_cross_size, container_max_cross_size, depends_on_block_constraints) =
|
let (container_min_size, container_max_size, depends_on_block_constraints) =
|
||||||
self.available_cross_space_for_flex_items(containing_block_for_container);
|
self.available_space_for_flex_items(containing_block_for_container);
|
||||||
|
|
||||||
let depends_on_block_constraints =
|
let depends_on_block_constraints =
|
||||||
depends_on_block_constraints || self.config.flex_direction == FlexDirection::Column;
|
depends_on_block_constraints || self.config.flex_direction == FlexDirection::Column;
|
||||||
|
@ -647,8 +647,8 @@ impl FlexContainer {
|
||||||
layout_context,
|
layout_context,
|
||||||
positioning_context,
|
positioning_context,
|
||||||
containing_block,
|
containing_block,
|
||||||
container_min_cross_size,
|
container_min_cross_size: container_min_size.cross,
|
||||||
container_max_cross_size,
|
container_max_cross_size: container_max_size.cross,
|
||||||
// https://drafts.csswg.org/css-flexbox/#definite-sizes
|
// https://drafts.csswg.org/css-flexbox/#definite-sizes
|
||||||
container_definite_inner_size: self.config.flex_axis.vec2_to_flex_relative(
|
container_definite_inner_size: self.config.flex_axis.vec2_to_flex_relative(
|
||||||
LogicalVec2 {
|
LogicalVec2 {
|
||||||
|
@ -666,6 +666,7 @@ impl FlexContainer {
|
||||||
self.main_content_sizes(layout_context, &containing_block.into(), || &flex_context)
|
self.main_content_sizes(layout_context, &containing_block.into(), || &flex_context)
|
||||||
.sizes
|
.sizes
|
||||||
.max_content
|
.max_content
|
||||||
|
.clamp_between_extremums(container_min_size.main, container_max_size.main)
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1034,10 +1035,10 @@ impl FlexContainer {
|
||||||
Fragment::AbsoluteOrFixedPositioned(hoisted_fragment)
|
Fragment::AbsoluteOrFixedPositioned(hoisted_fragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn available_cross_space_for_flex_items(
|
fn available_space_for_flex_items(
|
||||||
&self,
|
&self,
|
||||||
containing_block_for_container: &ContainingBlock,
|
containing_block_for_container: &ContainingBlock,
|
||||||
) -> (Au, Option<Au>, bool) {
|
) -> (FlexRelativeVec2<Au>, FlexRelativeVec2<Option<Au>>, bool) {
|
||||||
let sizes: ContentBoxSizesAndPBMDeprecated = self
|
let sizes: ContentBoxSizesAndPBMDeprecated = self
|
||||||
.style
|
.style
|
||||||
.content_box_sizes_and_padding_border_margin(&containing_block_for_container.into())
|
.content_box_sizes_and_padding_border_margin(&containing_block_for_container.into())
|
||||||
|
@ -1053,8 +1054,8 @@ impl FlexContainer {
|
||||||
.vec2_to_flex_relative(sizes.content_min_box_size.auto_is(Au::zero));
|
.vec2_to_flex_relative(sizes.content_min_box_size.auto_is(Au::zero));
|
||||||
|
|
||||||
(
|
(
|
||||||
min_box_size.cross,
|
min_box_size,
|
||||||
max_box_size.cross,
|
max_box_size,
|
||||||
sizes.depends_on_block_constraints,
|
sizes.depends_on_block_constraints,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,121 +1,4 @@
|
||||||
[align-content-vert-001b.html]
|
[align-content-vert-001b.html]
|
||||||
[.flexbox div 42]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 43]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 40]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 46]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 31]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 44]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 45]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 48]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 30]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 66]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 67]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 24]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 26]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 27]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 20]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 21]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 22]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 23]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 28]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 29]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 47]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 55]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 54]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 51]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 50]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 53]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 52]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 72]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 71]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 70]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 56]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 19]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 18]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 69]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 39]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 38]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 68]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 36]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 35]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 4]
|
[.flexbox div 4]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -130,36 +13,3 @@
|
||||||
|
|
||||||
[.flexbox div 8]
|
[.flexbox div 8]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[.flexbox div 32]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 11]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 12]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 14]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 15]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 16]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 59]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 60]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 62]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 63]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[.flexbox div 64]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
3
tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini
vendored
Normal file
3
tests/wpt/meta/css/css-flexbox/fieldset-as-container-justify-center.tentative.html.ini
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[fieldset-as-container-justify-center.tentative.html]
|
||||||
|
[.item 1]
|
||||||
|
expected: FAIL
|
|
@ -10,7 +10,3 @@
|
||||||
|
|
||||||
[.flexbox, .inline-flexbox 4]
|
[.flexbox, .inline-flexbox 4]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[.flexbox 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[flexbox-justify-content-vert-001b.xhtml]
|
|
||||||
expected: FAIL
|
|
|
@ -1,3 +0,0 @@
|
||||||
[justify-content-007.html]
|
|
||||||
[.flexitem + .flexitem 1]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[multiline-column-max-height.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[percentage-heights-015.html]
|
|
||||||
expected: FAIL
|
|
Loading…
Add table
Add a link
Reference in a new issue