mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
layout: Let automatic_min_size()
take a flex-relative cb size (#35642)
This method was taking an `IndefiniteContainingBlock` parameter, and then it would first take the size corresponding to the main axis, and then the one for the cross axis. But it's simpler to just let it take a `FlexRelativeVec2<AuOrAuto>` parameter. Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
3f6b21d8e1
commit
864a5edb0b
1 changed files with 14 additions and 20 deletions
|
@ -1106,8 +1106,8 @@ fn allocate_free_cross_space_for_flex_line(
|
||||||
impl<'a> FlexItem<'a> {
|
impl<'a> FlexItem<'a> {
|
||||||
fn new(flex_context: &FlexContext, box_: &'a FlexItemBox) -> Self {
|
fn new(flex_context: &FlexContext, box_: &'a FlexItemBox) -> Self {
|
||||||
let config = &flex_context.config;
|
let config = &flex_context.config;
|
||||||
let containing_block = flex_context.containing_block;
|
let containing_block = IndefiniteContainingBlock::from(flex_context.containing_block);
|
||||||
let parent_writing_mode = containing_block.style.writing_mode;
|
let parent_writing_mode = containing_block.writing_mode;
|
||||||
let item_writing_mode = box_.style().writing_mode;
|
let item_writing_mode = box_.style().writing_mode;
|
||||||
|
|
||||||
let container_is_horizontal = parent_writing_mode.is_horizontal();
|
let container_is_horizontal = parent_writing_mode.is_horizontal();
|
||||||
|
@ -1125,7 +1125,7 @@ impl<'a> FlexItem<'a> {
|
||||||
} = box_
|
} = box_
|
||||||
.independent_formatting_context
|
.independent_formatting_context
|
||||||
.layout_style()
|
.layout_style()
|
||||||
.content_box_sizes_and_padding_border_margin(&containing_block.into());
|
.content_box_sizes_and_padding_border_margin(&containing_block);
|
||||||
|
|
||||||
let content_box_size = content_box_sizes.map(|size| size.preferred);
|
let content_box_size = content_box_sizes.map(|size| size.preferred);
|
||||||
// TODO(#32853): handle size keywords.
|
// TODO(#32853): handle size keywords.
|
||||||
|
@ -1157,7 +1157,7 @@ impl<'a> FlexItem<'a> {
|
||||||
main: flex_relative_content_min_size.main.auto_is(|| {
|
main: flex_relative_content_min_size.main.auto_is(|| {
|
||||||
box_.automatic_min_size(
|
box_.automatic_min_size(
|
||||||
flex_context.layout_context,
|
flex_context.layout_context,
|
||||||
&containing_block.into(),
|
flex_context.vec2_to_flex_relative(containing_block.size),
|
||||||
cross_axis_is_item_block_axis,
|
cross_axis_is_item_block_axis,
|
||||||
flex_relative_content_box_size,
|
flex_relative_content_box_size,
|
||||||
flex_relative_content_min_size,
|
flex_relative_content_min_size,
|
||||||
|
@ -2302,7 +2302,7 @@ impl FlexItemBox {
|
||||||
config.item_with_auto_cross_size_stretches_to_container_size(style, &margin);
|
config.item_with_auto_cross_size_stretches_to_container_size(style, &margin);
|
||||||
let automatic_min_size = self.automatic_min_size(
|
let automatic_min_size = self.automatic_min_size(
|
||||||
layout_context,
|
layout_context,
|
||||||
containing_block,
|
flex_axis.vec2_to_flex_relative(containing_block.size),
|
||||||
cross_axis_is_item_block_axis,
|
cross_axis_is_item_block_axis,
|
||||||
flex_axis.vec2_to_flex_relative(content_box_size),
|
flex_axis.vec2_to_flex_relative(content_box_size),
|
||||||
flex_axis.vec2_to_flex_relative(content_min_box_size),
|
flex_axis.vec2_to_flex_relative(content_min_box_size),
|
||||||
|
@ -2498,7 +2498,7 @@ impl FlexItemBox {
|
||||||
fn automatic_min_size(
|
fn automatic_min_size(
|
||||||
&self,
|
&self,
|
||||||
layout_context: &LayoutContext,
|
layout_context: &LayoutContext,
|
||||||
containing_block: &IndefiniteContainingBlock,
|
containing_block_size: FlexRelativeVec2<AuOrAuto>,
|
||||||
cross_axis_is_item_block_axis: bool,
|
cross_axis_is_item_block_axis: bool,
|
||||||
content_box_size: FlexRelativeVec2<Size<Au>>,
|
content_box_size: FlexRelativeVec2<Size<Au>>,
|
||||||
min_size: FlexRelativeVec2<GenericLengthPercentageOrAuto<Au>>,
|
min_size: FlexRelativeVec2<GenericLengthPercentageOrAuto<Au>>,
|
||||||
|
@ -2518,13 +2518,10 @@ impl FlexItemBox {
|
||||||
// > If the item’s preferred main size is definite and not automatic, then the specified
|
// > If the item’s preferred main size is definite and not automatic, then the specified
|
||||||
// > size suggestion is that size. It is otherwise undefined.
|
// > size suggestion is that size. It is otherwise undefined.
|
||||||
let specified_size_suggestion = content_box_size.main.maybe_resolve_extrinsic(
|
let specified_size_suggestion = content_box_size.main.maybe_resolve_extrinsic(
|
||||||
if cross_axis_is_item_block_axis {
|
containing_block_size
|
||||||
containing_block.size.inline
|
.main
|
||||||
} else {
|
.non_auto()
|
||||||
containing_block.size.block
|
.map(|v| v - pbm_auto_is_zero.main),
|
||||||
}
|
|
||||||
.non_auto()
|
|
||||||
.map(|v| v - pbm_auto_is_zero.main),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
let is_replaced = self.independent_formatting_context.is_replaced();
|
let is_replaced = self.independent_formatting_context.is_replaced();
|
||||||
|
@ -2536,13 +2533,10 @@ impl FlexItemBox {
|
||||||
|
|
||||||
let cross_size = SizeConstraint::new(
|
let cross_size = SizeConstraint::new(
|
||||||
if content_box_size.cross.is_initial() && auto_cross_size_stretches_to_container_size {
|
if content_box_size.cross.is_initial() && auto_cross_size_stretches_to_container_size {
|
||||||
if cross_axis_is_item_block_axis {
|
containing_block_size
|
||||||
containing_block.size.block
|
.cross
|
||||||
} else {
|
.non_auto()
|
||||||
containing_block.size.inline
|
.map(|v| v - pbm_auto_is_zero.cross)
|
||||||
}
|
|
||||||
.map(|v| v - pbm_auto_is_zero.cross)
|
|
||||||
.non_auto()
|
|
||||||
} else {
|
} else {
|
||||||
// TODO(#32853): handle size keywords.
|
// TODO(#32853): handle size keywords.
|
||||||
content_box_size.cross.to_numeric()
|
content_box_size.cross.to_numeric()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue