Skip to content

Commit

Permalink
Delayed initialization over mutation
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonSapin committed Dec 10, 2019
1 parent 1fa20e9 commit c07c980
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions components/layout_2020/positioned.rs
Expand Up @@ -235,11 +235,12 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
let start = start.percentage_relative_to(containing_size);
let end = end.percentage_relative_to(containing_size);

let mut margin_start = computed_margin_start.auto_is(Length::zero);
let mut margin_end = computed_margin_end.auto_is(Length::zero);

let size = if let LengthOrAuto::LengthPercentage(size) = size {
let margins = containing_size - start - end - padding_border_sum - size;
let margin_start;
let margin_end;
let used_size;
if let LengthOrAuto::LengthPercentage(s) = size {
used_size = s;
let margins = containing_size - start - end - padding_border_sum - s;
match (computed_margin_start, computed_margin_end) {
(LengthOrAuto::Auto, LengthOrAuto::Auto) => {
let (s, e) = solve_margins(margins);
Expand All @@ -248,19 +249,25 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
},
(LengthOrAuto::Auto, LengthOrAuto::LengthPercentage(end)) => {
margin_start = margins - end;
margin_end = end;
},
(LengthOrAuto::LengthPercentage(start), LengthOrAuto::Auto) => {
margin_start = start;
margin_end = margins - start;
},
(
LengthOrAuto::LengthPercentage(_),
LengthOrAuto::LengthPercentage(_),
) => {},
LengthOrAuto::LengthPercentage(start),
LengthOrAuto::LengthPercentage(end),
) => {
margin_start = start;
margin_end = end;
},
}
size
} else {
margin_start = computed_margin_start.auto_is(Length::zero);
margin_end = computed_margin_end.auto_is(Length::zero);
// FIXME(nox): What happens if that is negative?
containing_size -
used_size = containing_size -
start -
end -
padding_border_sum -
Expand All @@ -269,7 +276,7 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
};
(
Anchor::Start(start),
LengthOrAuto::LengthPercentage(size),
LengthOrAuto::LengthPercentage(used_size),
margin_start,
margin_end,
)
Expand Down

0 comments on commit c07c980

Please sign in to comment.