diff options
author | Matt Brubeck <mbrubeck@limpet.net> | 2015-03-05 08:43:36 -0800 |
---|---|---|
committer | Matt Brubeck <mbrubeck@limpet.net> | 2015-03-09 14:22:36 -0700 |
commit | cabbbcc97801e53dff4d1111cba66b0054216ee3 (patch) | |
tree | 2f10735e89010ad3f45c654448bd1ee34f0c85c5 /components/layout/fragment.rs | |
parent | 8221bfc3ef854d90ecb9a0df3aa490310cbe8469 (diff) | |
download | servo-cabbbcc97801e53dff4d1111cba66b0054216ee3.tar.gz servo-cabbbcc97801e53dff4d1111cba66b0054216ee3.zip |
Keep track of the containing block writing mode.
This is necessary for correctly converting `relative_containing_block_size`
to physical coordinates.
Diffstat (limited to 'components/layout/fragment.rs')
-rw-r--r-- | components/layout/fragment.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 1a32b813488..4faa266217c 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -34,7 +34,7 @@ use msg::constellation_msg::{ConstellationChan, Msg, PipelineId, SubpageId}; use net::image::holder::ImageHolder; use net::local_image_cache::LocalImageCache; use util::geometry::{self, Au, ZERO_POINT}; -use util::logical_geometry::{LogicalRect, LogicalSize, LogicalMargin}; +use util::logical_geometry::{LogicalRect, LogicalSize, LogicalMargin, WritingMode}; use util::range::*; use util::smallvec::SmallVec; use util::str::is_whitespace; @@ -1973,10 +1973,11 @@ impl Fragment { pub fn stacking_relative_border_box(&self, stacking_relative_flow_origin: &Point2D<Au>, relative_containing_block_size: &LogicalSize<Au>, + relative_containing_block_mode: WritingMode, coordinate_system: CoordinateSystem) -> Rect<Au> { - // FIXME (mbrubeck): Get the real container size, taking vertical writing modes into account. - let container_size = Size2D(relative_containing_block_size.inline, relative_containing_block_size.block); + let container_size = + relative_containing_block_size.to_physical(relative_containing_block_mode); let border_box = self.border_box.to_physical(self.style.writing_mode, container_size); if coordinate_system == CoordinateSystem::Self && self.establishes_stacking_context() { return Rect(ZERO_POINT, border_box.size) |