Avoid splitting boxes if possible

This commit is contained in:
Brendan Zabarauskas 2014-05-21 13:53:40 -07:00
parent d6d36997c6
commit 9efaf831fc

View file

@ -1203,7 +1203,12 @@ impl Box {
} }
} }
let left_box = if left_range.length() > CharIndex(0) { let left_is_some = left_range.length() > CharIndex(0);
if (pieces_processed_count == 1 || !left_is_some) && !starts_line {
None
} else {
let left_box = if left_is_some {
let new_text_box_info = ScannedTextBoxInfo::new(text_box_info.run.clone(), left_range); let new_text_box_info = ScannedTextBoxInfo::new(text_box_info.run.clone(), left_range);
let width = new_text_box_info.run.advance_for_range(&left_range); let width = new_text_box_info.run.advance_for_range(&left_range);
let height = self.border_box.size.height; let height = self.border_box.size.height;
@ -1213,17 +1218,14 @@ impl Box {
None None
}; };
let right_box = right_range.map_or(None, |right_range: Range<CharIndex>| { let right_box = right_range.map(|right_range| {
let new_text_box_info = ScannedTextBoxInfo::new(text_box_info.run.clone(), right_range); let new_text_box_info = ScannedTextBoxInfo::new(text_box_info.run.clone(), right_range);
let width = new_text_box_info.run.advance_for_range(&right_range); let width = new_text_box_info.run.advance_for_range(&right_range);
let height = self.border_box.size.height; let height = self.border_box.size.height;
let size = Size2D(width, height); let size = Size2D(width, height);
Some(self.transform(size, ScannedTextBox(new_text_box_info))) (self.transform(size, ScannedTextBox(new_text_box_info)))
}); });
if (pieces_processed_count == 1 || left_box.is_none()) && !starts_line {
None
} else {
Some((left_box, right_box)) Some((left_box, right_box))
} }
} }