mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Delayed initialization over mutation
This commit is contained in:
parent
1fa20e93d0
commit
c07c980501
1 changed files with 18 additions and 11 deletions
|
@ -235,11 +235,12 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
|
||||||
let start = start.percentage_relative_to(containing_size);
|
let start = start.percentage_relative_to(containing_size);
|
||||||
let end = end.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 margin_start;
|
||||||
let mut margin_end = computed_margin_end.auto_is(Length::zero);
|
let margin_end;
|
||||||
|
let used_size;
|
||||||
let size = if let LengthOrAuto::LengthPercentage(size) = size {
|
if let LengthOrAuto::LengthPercentage(s) = size {
|
||||||
let margins = containing_size - start - end - padding_border_sum - size;
|
used_size = s;
|
||||||
|
let margins = containing_size - start - end - padding_border_sum - s;
|
||||||
match (computed_margin_start, computed_margin_end) {
|
match (computed_margin_start, computed_margin_end) {
|
||||||
(LengthOrAuto::Auto, LengthOrAuto::Auto) => {
|
(LengthOrAuto::Auto, LengthOrAuto::Auto) => {
|
||||||
let (s, e) = solve_margins(margins);
|
let (s, e) = solve_margins(margins);
|
||||||
|
@ -248,19 +249,25 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
|
||||||
},
|
},
|
||||||
(LengthOrAuto::Auto, LengthOrAuto::LengthPercentage(end)) => {
|
(LengthOrAuto::Auto, LengthOrAuto::LengthPercentage(end)) => {
|
||||||
margin_start = margins - end;
|
margin_start = margins - end;
|
||||||
|
margin_end = end;
|
||||||
},
|
},
|
||||||
(LengthOrAuto::LengthPercentage(start), LengthOrAuto::Auto) => {
|
(LengthOrAuto::LengthPercentage(start), LengthOrAuto::Auto) => {
|
||||||
|
margin_start = start;
|
||||||
margin_end = margins - start;
|
margin_end = margins - start;
|
||||||
},
|
},
|
||||||
(
|
(
|
||||||
LengthOrAuto::LengthPercentage(_),
|
LengthOrAuto::LengthPercentage(start),
|
||||||
LengthOrAuto::LengthPercentage(_),
|
LengthOrAuto::LengthPercentage(end),
|
||||||
) => {},
|
) => {
|
||||||
|
margin_start = start;
|
||||||
|
margin_end = end;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
size
|
|
||||||
} else {
|
} 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?
|
// FIXME(nox): What happens if that is negative?
|
||||||
containing_size -
|
used_size = containing_size -
|
||||||
start -
|
start -
|
||||||
end -
|
end -
|
||||||
padding_border_sum -
|
padding_border_sum -
|
||||||
|
@ -269,7 +276,7 @@ impl<'a> AbsolutelyPositionedFragment<'a> {
|
||||||
};
|
};
|
||||||
(
|
(
|
||||||
Anchor::Start(start),
|
Anchor::Start(start),
|
||||||
LengthOrAuto::LengthPercentage(size),
|
LengthOrAuto::LengthPercentage(used_size),
|
||||||
margin_start,
|
margin_start,
|
||||||
margin_end,
|
margin_end,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue