aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flexbox
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout_2020/flexbox')
-rw-r--r--components/layout_2020/flexbox/layout.rs28
1 files changed, 18 insertions, 10 deletions
diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs
index 5adf9c912f0..1e78f8c6a7e 100644
--- a/components/layout_2020/flexbox/layout.rs
+++ b/components/layout_2020/flexbox/layout.rs
@@ -18,7 +18,7 @@ use style::properties::longhands::box_sizing::computed_value::T as BoxSizing;
use style::properties::longhands::flex_direction::computed_value::T as FlexDirection;
use style::properties::longhands::flex_wrap::computed_value::T as FlexWrap;
use style::properties::ComputedValues;
-use style::values::computed::length::Size;
+use style::values::computed::length::Size as StyleSize;
use style::values::generics::flex::GenericFlexBasis as FlexBasis;
use style::values::generics::length::{GenericLengthPercentageOrAuto, LengthPercentageOrNormal};
use style::values::specified::align::AlignFlags;
@@ -32,7 +32,7 @@ use crate::cell::ArcRefCell;
use crate::context::LayoutContext;
use crate::formatting_contexts::{Baselines, IndependentFormattingContext, IndependentLayout};
use crate::fragment_tree::{BoxFragment, CollapsedBlockMargins, Fragment, FragmentFlags};
-use crate::geom::{AuOrAuto, LogicalRect, LogicalSides, LogicalVec2};
+use crate::geom::{AuOrAuto, LogicalRect, LogicalSides, LogicalVec2, Size};
use crate::positioned::{
relative_adjustement, AbsolutelyPositionedBox, PositioningContext, PositioningContextLength,
};
@@ -1873,11 +1873,16 @@ impl FlexItem<'_> {
containing_block,
&replaced.style,
LogicalVec2 {
- inline: AuOrAuto::LengthPercentage(inline_size),
- block: block_size,
+ inline: Size::Numeric(inline_size),
+ block: block_size.non_auto().map_or(Size::Initial, Size::Numeric),
},
- flex_axis.vec2_to_flow_relative(self.content_min_size),
- flex_axis.vec2_to_flow_relative(self.content_max_size),
+ flex_axis
+ .vec2_to_flow_relative(self.content_min_size)
+ .map(|size| Size::Numeric(*size)),
+ flex_axis
+ .vec2_to_flow_relative(self.content_max_size)
+ .map(|size| size.map_or(Size::Initial, Size::Numeric)),
+ flex_axis.vec2_to_flow_relative(self.pbm_auto_is_zero),
);
let hypothetical_cross_size = flex_axis.vec2_to_flex_relative(size).cross;
@@ -2505,7 +2510,7 @@ impl FlexItemBox {
let used_flex_basis = match &style.get_position().flex_basis {
FlexBasis::Content => FlexBasis::Content,
- FlexBasis::Size(Size::LengthPercentage(length_percentage)) => {
+ FlexBasis::Size(StyleSize::LengthPercentage(length_percentage)) => {
let apply_box_sizing = |length: Au| {
match style.get_position().box_sizing {
BoxSizing::ContentBox => length,
@@ -2678,9 +2683,12 @@ impl FlexItemBox {
.used_size_as_if_inline_element_from_content_box_sizes(
flex_context.containing_block,
&replaced.style,
- content_box_size,
- min_size,
- max_size,
+ content_box_size
+ .map(|size| size.non_auto().map_or(Size::Initial, Size::Numeric)),
+ min_size.map(|size| Size::Numeric(*size)),
+ max_size.map(|size| size.map_or(Size::Initial, Size::Numeric)),
+ padding_border_margin.padding_border_sums +
+ padding_border_margin.margin.auto_is(Au::zero).sum(),
)
.block
},