mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Auto merge of #5805 - pcwalton:whitespace-effect-on-minimum-inline-sizes, r=glennw
Improves Amazon. r? @glennw <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5805) <!-- Reviewable:end -->
This commit is contained in:
commit
68f03c9dbb
5 changed files with 154 additions and 7 deletions
|
@ -1133,12 +1133,49 @@ impl Flow for InlineFlow {
|
|||
flow::mut_base(kid).floats = Floats::new(writing_mode);
|
||||
}
|
||||
|
||||
let mut computation = IntrinsicISizesContribution::new();
|
||||
let mut intrinsic_sizes_for_flow = IntrinsicISizesContribution::new();
|
||||
let mut intrinsic_sizes_for_inline_run = IntrinsicISizesContribution::new();
|
||||
let mut intrinsic_sizes_for_nonbroken_run = IntrinsicISizesContribution::new();
|
||||
for fragment in self.fragments.fragments.iter_mut() {
|
||||
debug!("Flow: measuring {:?}", *fragment);
|
||||
computation.union_inline(&fragment.compute_intrinsic_inline_sizes().finish())
|
||||
let intrinsic_sizes_for_fragment = fragment.compute_intrinsic_inline_sizes().finish();
|
||||
match fragment.style.get_inheritedtext().white_space {
|
||||
white_space::T::nowrap => {
|
||||
intrinsic_sizes_for_nonbroken_run.union_nonbreaking_inline(
|
||||
&intrinsic_sizes_for_fragment)
|
||||
}
|
||||
white_space::T::pre => {
|
||||
intrinsic_sizes_for_nonbroken_run.union_nonbreaking_inline(
|
||||
&intrinsic_sizes_for_fragment);
|
||||
|
||||
// Flush the intrinsic sizes we've been gathering up in order to handle the
|
||||
// line break, if necessary.
|
||||
if fragment.requires_line_break_afterward_if_wrapping_on_newlines() {
|
||||
intrinsic_sizes_for_inline_run.union_inline(
|
||||
&intrinsic_sizes_for_nonbroken_run.finish());
|
||||
intrinsic_sizes_for_nonbroken_run = IntrinsicISizesContribution::new();
|
||||
intrinsic_sizes_for_flow.union_block(
|
||||
&intrinsic_sizes_for_inline_run.finish());
|
||||
intrinsic_sizes_for_inline_run = IntrinsicISizesContribution::new();
|
||||
}
|
||||
}
|
||||
white_space::T::normal => {
|
||||
// Flush the intrinsic sizes we were gathering up for the nonbroken run, if
|
||||
// necessary.
|
||||
intrinsic_sizes_for_inline_run.union_inline(
|
||||
&intrinsic_sizes_for_nonbroken_run.finish());
|
||||
intrinsic_sizes_for_nonbroken_run = IntrinsicISizesContribution::new();
|
||||
|
||||
intrinsic_sizes_for_nonbroken_run.union_inline(&intrinsic_sizes_for_fragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
self.base.intrinsic_inline_sizes = computation.finish()
|
||||
|
||||
// Flush any remaining nonbroken-run and inline-run intrinsic sizes.
|
||||
intrinsic_sizes_for_inline_run.union_inline(&intrinsic_sizes_for_nonbroken_run.finish());
|
||||
intrinsic_sizes_for_flow.union_block(&intrinsic_sizes_for_inline_run.finish());
|
||||
|
||||
// Finish up the computation.
|
||||
self.base.intrinsic_inline_sizes = intrinsic_sizes_for_flow.finish()
|
||||
}
|
||||
|
||||
/// Recursively (top-down) determines the actual inline-size of child contexts and fragments.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue