servo: Merge #7771 - Use the correct container size in compute_overflow (from mbrubeck:rtl-stacking-context); r=pcwalton

Fixes #7768 - positioning of RTL stacking contexts. r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: e68bd8d4ffc7f2cd9511999760c7a67418a853e1
This commit is contained in:
Matt Brubeck 2015-09-28 18:57:08 -06:00
parent 64fbdb7d1c
commit 96964b7093
3 changed files with 12 additions and 7 deletions

View File

@ -2126,9 +2126,10 @@ impl Flow for BlockFlow {
}
fn compute_overflow(&self) -> Rect<Au> {
self.fragment.compute_overflow(&self.base
.early_absolute_position_info
.relative_containing_block_size)
self.fragment.compute_overflow(&self.base.early_absolute_position_info
.relative_containing_block_size,
self.base.early_absolute_position_info
.relative_containing_block_mode)
}
fn iterate_through_fragment_border_boxes(&self,

View File

@ -2160,9 +2160,12 @@ impl Fragment {
}
/// Computes the overflow rect of this fragment relative to the start of the flow.
pub fn compute_overflow(&self, relative_containing_block_size: &LogicalSize<Au>) -> Rect<Au> {
// FIXME(pcwalton, #2795): Get the real container size.
let container_size = Size2D::zero();
pub fn compute_overflow(&self,
relative_containing_block_size: &LogicalSize<Au>,
relative_containing_block_mode: WritingMode)
-> Rect<Au> {
let container_size =
relative_containing_block_size.to_physical(relative_containing_block_mode);
let mut border_box = self.border_box.to_physical(self.style.writing_mode, container_size);
// Relative position can cause us to draw outside our border box.

View File

@ -1775,7 +1775,8 @@ impl Flow for InlineFlow {
let mut overflow = ZERO_RECT;
for fragment in &self.fragments.fragments {
overflow = overflow.union(&fragment.compute_overflow(
&self.base.early_absolute_position_info.relative_containing_block_size))
&self.base.early_absolute_position_info.relative_containing_block_size,
self.base.early_absolute_position_info.relative_containing_block_mode));
}
overflow
}