aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/block.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout/block.rs')
-rw-r--r--components/layout/block.rs22
1 files changed, 9 insertions, 13 deletions
diff --git a/components/layout/block.rs b/components/layout/block.rs
index db74ab64074..7bbeb7a79ee 100644
--- a/components/layout/block.rs
+++ b/components/layout/block.rs
@@ -325,22 +325,20 @@ impl CandidateBSizeIterator {
(LengthOrPercentageOrAuto::Percentage(percent), Some(block_container_block_size)) => {
MaybeAuto::Specified(block_container_block_size.scale_by(percent))
}
- (LengthOrPercentageOrAuto::Calc(calc), Some(block_container_block_size)) => {
- MaybeAuto::Specified(calc.length() + block_container_block_size.scale_by(calc.percentage()))
+ (LengthOrPercentageOrAuto::Calc(calc), _) => {
+ MaybeAuto::from_option(calc.to_computed(block_container_block_size))
}
(LengthOrPercentageOrAuto::Percentage(_), None) |
- (LengthOrPercentageOrAuto::Auto, _) |
- (LengthOrPercentageOrAuto::Calc(_), _) => MaybeAuto::Auto,
+ (LengthOrPercentageOrAuto::Auto, _) => MaybeAuto::Auto,
(LengthOrPercentageOrAuto::Length(length), _) => MaybeAuto::Specified(length),
};
let max_block_size = match (fragment.style.max_block_size(), block_container_block_size) {
(LengthOrPercentageOrNone::Percentage(percent), Some(block_container_block_size)) => {
Some(block_container_block_size.scale_by(percent))
}
- (LengthOrPercentageOrNone::Calc(calc), Some(block_container_block_size)) => {
- Some(block_container_block_size.scale_by(calc.percentage()) + calc.length())
+ (LengthOrPercentageOrNone::Calc(calc), _) => {
+ calc.to_computed(block_container_block_size)
}
- (LengthOrPercentageOrNone::Calc(_), _) |
(LengthOrPercentageOrNone::Percentage(_), None) |
(LengthOrPercentageOrNone::None, _) => None,
(LengthOrPercentageOrNone::Length(length), _) => Some(length),
@@ -349,10 +347,9 @@ impl CandidateBSizeIterator {
(LengthOrPercentage::Percentage(percent), Some(block_container_block_size)) => {
block_container_block_size.scale_by(percent)
}
- (LengthOrPercentage::Calc(calc), Some(block_container_block_size)) => {
- calc.length() + block_container_block_size.scale_by(calc.percentage())
+ (LengthOrPercentage::Calc(calc), _) => {
+ calc.to_computed(block_container_block_size).unwrap_or(Au(0))
}
- (LengthOrPercentage::Calc(calc), None) => calc.length(),
(LengthOrPercentage::Percentage(_), None) => Au(0),
(LengthOrPercentage::Length(length), _) => length,
};
@@ -1169,15 +1166,14 @@ impl BlockFlow {
let content_block_size = self.fragment.style().content_block_size();
match (content_block_size, containing_block_size) {
- (LengthOrPercentageOrAuto::Calc(calc), Some(container_size)) => {
- Some(container_size.scale_by(calc.percentage()) + calc.length())
+ (LengthOrPercentageOrAuto::Calc(calc), _) => {
+ calc.to_computed(containing_block_size)
}
(LengthOrPercentageOrAuto::Length(length), _) => Some(length),
(LengthOrPercentageOrAuto::Percentage(percent), Some(container_size)) => {
Some(container_size.scale_by(percent))
}
(LengthOrPercentageOrAuto::Percentage(_), None) |
- (LengthOrPercentageOrAuto::Calc(_), None) |
(LengthOrPercentageOrAuto::Auto, None) => {
None
}