diff options
Diffstat (limited to 'components/layout/flexbox/layout.rs')
-rw-r--r-- | components/layout/flexbox/layout.rs | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/components/layout/flexbox/layout.rs b/components/layout/flexbox/layout.rs index 8fc5aa0778b..985f5f3cf65 100644 --- a/components/layout/flexbox/layout.rs +++ b/components/layout/flexbox/layout.rs @@ -417,9 +417,8 @@ struct DesiredFlexFractionAndGrowOrShrinkFactor { #[derive(Default)] struct FlexItemBoxInlineContentSizesInfo { outer_flex_base_size: Au, - content_min_main_size: Au, - content_max_main_size: Option<Au>, - pbm_auto_is_zero: FlexRelativeVec2<Au>, + outer_min_main_size: Au, + outer_max_main_size: Option<Au>, min_flex_factors: DesiredFlexFractionAndGrowOrShrinkFactor, max_flex_factors: DesiredFlexFractionAndGrowOrShrinkFactor, min_content_main_size_for_multiline_container: Au, @@ -583,9 +582,8 @@ impl FlexContainer { for FlexItemBoxInlineContentSizesInfo { outer_flex_base_size, - content_min_main_size, - content_max_main_size, - pbm_auto_is_zero, + outer_min_main_size, + outer_max_main_size, min_flex_factors, max_flex_factors, min_content_main_size_for_multiline_container, @@ -595,16 +593,13 @@ impl FlexContainer { // > 4. Add each item’s flex base size to the product of its flex grow factor (scaled flex shrink // > factor, if shrinking) and the chosen flex fraction, then clamp that result by the max main size // > floored by the min main size. - let outer_min_main_size = *content_min_main_size + pbm_auto_is_zero.main; - let outer_max_main_size = content_max_main_size.map(|v| v + pbm_auto_is_zero.main); - // > 5. The flex container’s max-content size is the largest sum (among all the lines) of the // > afore-calculated sizes of all items within a single line. container_max_content_size += (*outer_flex_base_size + Au::from_f32_px( max_flex_factors.flex_grow_or_shrink_factor * chosen_max_flex_fraction, )) - .clamp_between_extremums(outer_min_main_size, outer_max_main_size); + .clamp_between_extremums(*outer_min_main_size, *outer_max_main_size); // > The min-content main size of a single-line flex container is calculated // > identically to the max-content main size, except that the flex items’ @@ -621,7 +616,7 @@ impl FlexContainer { Au::from_f32_px( min_flex_factors.flex_grow_or_shrink_factor * chosen_min_flex_fraction, )) - .clamp_between_extremums(outer_min_main_size, outer_max_main_size); + .clamp_between_extremums(*outer_min_main_size, *outer_max_main_size); } else { container_min_content_size .max_assign(*min_content_main_size_for_multiline_container); @@ -2458,6 +2453,8 @@ impl FlexItemBox { }; let outer_flex_base_size = flex_base_size + pbm_auto_is_zero.main; + let outer_min_main_size = content_min_main_size + pbm_auto_is_zero.main; + let outer_max_main_size = content_max_main_size.map(|v| v + pbm_auto_is_zero.main); let max_flex_factors = self.desired_flex_factors_for_preferred_width( content_contribution_sizes.max_content, flex_base_size, @@ -2483,20 +2480,19 @@ impl FlexItemBox { content_contribution_sizes.min_content; let style_position = &self.style().get_position(); if style_position.flex_grow.is_zero() { - min_content_main_size_for_multiline_container.min_assign(flex_base_size); + min_content_main_size_for_multiline_container.min_assign(outer_flex_base_size); } if style_position.flex_shrink.is_zero() { - min_content_main_size_for_multiline_container.max_assign(flex_base_size); + min_content_main_size_for_multiline_container.max_assign(outer_flex_base_size); } min_content_main_size_for_multiline_container = min_content_main_size_for_multiline_container - .clamp_between_extremums(content_min_main_size, content_max_main_size); + .clamp_between_extremums(outer_min_main_size, outer_max_main_size); FlexItemBoxInlineContentSizesInfo { outer_flex_base_size, - content_min_main_size, - content_max_main_size, - pbm_auto_is_zero, + outer_min_main_size, + outer_max_main_size, min_flex_factors, max_flex_factors, min_content_main_size_for_multiline_container, |