diff options
Diffstat (limited to 'components/layout/inline.rs')
-rw-r--r-- | components/layout/inline.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/components/layout/inline.rs b/components/layout/inline.rs index ec1d223cd36..099d9af14d5 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -1262,13 +1262,16 @@ impl InlineFlow { } pub fn baseline_offset_of_last_line(&self) -> Option<Au> { - match self.lines.last() { - None => None, - Some(ref last_line) => { - Some(last_line.bounds.start.b + last_line.bounds.size.block - - last_line.inline_metrics.depth_below_baseline) + // Find the last line that doesn't consist entirely of hypothetical boxes. + for line in self.lines.iter().rev() { + if (line.range.begin().get()..line.range.end().get()).any(|index| { + !self.fragments.fragments[index as usize].is_hypothetical() + }) { + return Some(line.bounds.start.b + line.bounds.size.block - + line.inline_metrics.depth_below_baseline) } } + None } } @@ -1451,7 +1454,6 @@ impl Flow for InlineFlow { self.minimum_depth_below_baseline); scanner.scan_for_lines(self, layout_context); - // Now, go through each line and lay out the fragments inside. let line_count = self.lines.len(); for (line_index, line) in self.lines.iter_mut().enumerate() { |