diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2018-01-24 14:31:07 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2018-01-24 14:31:07 +0530 |
commit | fc97f0b4640c0aa8ae7368a02ba5ce2b455261e7 (patch) | |
tree | b8e1e36d09dabca12ac4d3bf8ccccf1febcccf14 /components/layout | |
parent | f3c81fcda8a16e9f3d7a30a9f67b0a03d618e630 (diff) | |
download | servo-fc97f0b4640c0aa8ae7368a02ba5ce2b455261e7.tar.gz servo-fc97f0b4640c0aa8ae7368a02ba5ce2b455261e7.zip |
do not preserve suppress flag on second half of split
Diffstat (limited to 'components/layout')
-rw-r--r-- | components/layout/fragment.rs | 13 | ||||
-rw-r--r-- | components/layout/inline.rs | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index d11ed64a4be..4de15fdbb32 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -717,13 +717,15 @@ impl Fragment { } /// Transforms this fragment using the given `SplitInfo`, preserving all the other data. - pub fn transform_with_split_info(&self, split: &SplitInfo, text_run: Arc<TextRun>) - -> Fragment { + /// + /// If this is the first half of a split, `first` is true + pub fn transform_with_split_info(&self, split: &SplitInfo, text_run: Arc<TextRun>, + first: bool) -> Fragment { let size = LogicalSize::new(self.style.writing_mode, split.inline_size, self.border_box.size.block); // Preserve the insertion point if it is in this fragment's range or it is at line end. - let (flags, insertion_point) = match self.specific { + let (mut flags, insertion_point) = match self.specific { SpecificFragmentInfo::ScannedText(ref info) => { match info.insertion_point { Some(index) if split.range.contains(index) => (info.flags, info.insertion_point), @@ -734,6 +736,11 @@ impl Fragment { }, _ => (ScannedTextFlags::empty(), None) }; + + if !first { + flags.set(ScannedTextFlags::SUPPRESS_LINE_BREAK_BEFORE, false); + } + let info = Box::new(ScannedTextFragmentInfo::new( text_run, split.range, diff --git a/components/layout/inline.rs b/components/layout/inline.rs index c5be5b33390..2c9c37d204e 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -670,10 +670,10 @@ impl LineBreaker { }; inline_start_fragment = split_result.inline_start.as_ref().map(|x| { - fragment.transform_with_split_info(x, split_result.text_run.clone()) + fragment.transform_with_split_info(x, split_result.text_run.clone(), true) }); inline_end_fragment = split_result.inline_end.as_ref().map(|x| { - fragment.transform_with_split_info(x, split_result.text_run.clone()) + fragment.transform_with_split_info(x, split_result.text_run.clone(), false) }); // Push the first fragment onto the line we're working on and start off the next line with |