aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/inline.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout/inline.rs')
-rw-r--r--components/layout/inline.rs14
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() {