mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Simplify solve_containing_block_padding_border_and_margin_for_in_flow_box() (#30060)
Just use clamp_between_extremums() to resolve the inline size, and then only call solve_inline_margins_for_in_flow_block_level() once. There should be no change in behavior.
This commit is contained in:
parent
6e84d47fd3
commit
d9a38b00ff
1 changed files with 12 additions and 26 deletions
|
@ -1087,37 +1087,22 @@ fn solve_containing_block_padding_border_and_margin_for_in_flow_box<'a>(
|
||||||
.content_min_box_size(containing_block, &pbm)
|
.content_min_box_size(containing_block, &pbm)
|
||||||
.auto_is(Length::zero);
|
.auto_is(Length::zero);
|
||||||
|
|
||||||
let (mut inline_size, mut inline_margins) =
|
// https://drafts.csswg.org/css2/#the-width-property
|
||||||
if let Some(inline_size) = box_size.inline.non_auto() {
|
// https://drafts.csswg.org/css2/visudet.html#min-max-widths
|
||||||
(
|
let inline_size = box_size
|
||||||
inline_size,
|
.inline
|
||||||
solve_inline_margins_for_in_flow_block_level(containing_block, &pbm, inline_size),
|
.auto_is(|| {
|
||||||
)
|
|
||||||
} else {
|
|
||||||
let margin_inline_start = pbm.margin.inline_start.auto_is(Length::zero);
|
let margin_inline_start = pbm.margin.inline_start.auto_is(Length::zero);
|
||||||
let margin_inline_end = pbm.margin.inline_end.auto_is(Length::zero);
|
let margin_inline_end = pbm.margin.inline_end.auto_is(Length::zero);
|
||||||
let inline_size = containing_block.inline_size -
|
containing_block.inline_size -
|
||||||
pbm.padding_border_sums.inline -
|
pbm.padding_border_sums.inline -
|
||||||
margin_inline_start -
|
margin_inline_start -
|
||||||
margin_inline_end;
|
margin_inline_end
|
||||||
(inline_size, (margin_inline_start, margin_inline_end))
|
})
|
||||||
};
|
.clamp_between_extremums(min_box_size.inline, max_box_size.inline);
|
||||||
|
|
||||||
// https://drafts.csswg.org/css2/visudet.html#min-max-widths
|
|
||||||
if let Some(max_inline_size) = max_box_size.inline {
|
|
||||||
if inline_size > max_inline_size {
|
|
||||||
inline_size = max_inline_size;
|
|
||||||
inline_margins =
|
|
||||||
solve_inline_margins_for_in_flow_block_level(containing_block, &pbm, inline_size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if inline_size < min_box_size.inline {
|
|
||||||
inline_size = min_box_size.inline;
|
|
||||||
inline_margins =
|
|
||||||
solve_inline_margins_for_in_flow_block_level(containing_block, &pbm, inline_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
let inline_margins =
|
||||||
|
solve_inline_margins_for_in_flow_block_level(containing_block, &pbm, inline_size);
|
||||||
let margin = Sides {
|
let margin = Sides {
|
||||||
inline_start: inline_margins.0,
|
inline_start: inline_margins.0,
|
||||||
inline_end: inline_margins.1,
|
inline_end: inline_margins.1,
|
||||||
|
@ -1125,6 +1110,7 @@ fn solve_containing_block_padding_border_and_margin_for_in_flow_box<'a>(
|
||||||
block_end: pbm.margin.block_end.auto_is(Length::zero),
|
block_end: pbm.margin.block_end.auto_is(Length::zero),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// https://drafts.csswg.org/css2/#the-height-property
|
||||||
// https://drafts.csswg.org/css2/visudet.html#min-max-heights
|
// https://drafts.csswg.org/css2/visudet.html#min-max-heights
|
||||||
let mut block_size = box_size.block;
|
let mut block_size = box_size.block;
|
||||||
if let LengthOrAuto::LengthPercentage(ref mut block_size) = block_size {
|
if let LengthOrAuto::LengthPercentage(ref mut block_size) = block_size {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue