aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/flex.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-05-16 15:44:59 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2017-05-18 10:14:59 +0200
commitd0b9bd9c64bae4073c5114d124b79d5f0b9a83f3 (patch)
treed9b7bba3b2c2d3ac8d91248f1408e6b71ba3ad0d /components/layout/flex.rs
parentf935f2da01c759ee9a0da9b7d7a68ed1a1cbad5f (diff)
downloadservo-d0b9bd9c64bae4073c5114d124b79d5f0b9a83f3.tar.gz
servo-d0b9bd9c64bae4073c5114d124b79d5f0b9a83f3.zip
Refactor how calc() clamping is done on computed values (fixes #15296)
Diffstat (limited to 'components/layout/flex.rs')
-rw-r--r--components/layout/flex.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/components/layout/flex.rs b/components/layout/flex.rs
index dd990c61510..0abd32b6dc0 100644
--- a/components/layout/flex.rs
+++ b/components/layout/flex.rs
@@ -18,7 +18,6 @@ use flow::{INLINE_POSITION_IS_STATIC, IS_ABSOLUTELY_POSITIONED};
use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use layout_debug;
use model::{IntrinsicISizes, MaybeAuto, SizeConstraint};
-use model::{specified, specified_or_none};
use std::cmp::{max, min};
use std::ops::Range;
use style::computed_values::{align_content, align_self, flex_direction, flex_wrap, justify_content};
@@ -52,7 +51,7 @@ impl AxisSize {
}
}
LengthOrPercentageOrAuto::Calc(calc) => {
- match calc.to_computed(content_size) {
+ match calc.to_used_value(content_size) {
Some(length) => AxisSize::Definite(length),
None => AxisSize::Infinite,
}
@@ -79,7 +78,7 @@ fn from_flex_basis(flex_basis: LengthOrPercentageOrAutoOrContent,
(LengthOrPercentageOrAutoOrContent::Percentage(_), None) =>
MaybeAuto::Auto,
(LengthOrPercentageOrAutoOrContent::Calc(calc), _) =>
- MaybeAuto::from_option(calc.to_computed(containing_length)),
+ MaybeAuto::from_option(calc.to_used_value(containing_length)),
(LengthOrPercentageOrAutoOrContent::Content, _) =>
MaybeAuto::Auto,
(LengthOrPercentageOrAutoOrContent::Auto, Some(size)) =>
@@ -169,10 +168,11 @@ impl FlexItem {
- margin
+ block.fragment.box_sizing_boundary(direction);
self.base_size = basis.specified_or_default(content_size);
- self.max_size = specified_or_none(block.fragment.style.max_inline_size(),
- containing_length).unwrap_or(MAX_AU);
- self.min_size = specified(block.fragment.style.min_inline_size(),
- containing_length);
+ self.max_size =
+ block.fragment.style.max_inline_size()
+ .to_used_value(containing_length)
+ .unwrap_or(MAX_AU);
+ self.min_size = block.fragment.style.min_inline_size().to_used_value(containing_length);
}
Direction::Block => {
let basis = from_flex_basis(block.fragment.style.get_position().flex_basis,
@@ -182,10 +182,11 @@ impl FlexItem {
- block.fragment.border_padding.block_start_end()
+ block.fragment.box_sizing_boundary(direction);
self.base_size = basis.specified_or_default(content_size);
- self.max_size = specified_or_none(block.fragment.style.max_block_size(),
- containing_length).unwrap_or(MAX_AU);
- self.min_size = specified(block.fragment.style.min_block_size(),
- containing_length);
+ self.max_size =
+ block.fragment.style.max_block_size()
+ .to_used_value(containing_length)
+ .unwrap_or(MAX_AU);
+ self.min_size = block.fragment.style.min_block_size().to_used_value(containing_length);
}
}
}