aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2016-02-03 10:51:41 -0800
committerPatrick Walton <pcwalton@mimiga.net>2016-02-03 16:06:24 -0800
commit7c5b2d6cb3ee4f934e529162be368c36a7f590a4 (patch)
treef4210b9657dd5652aba454d73eb6d72271fed5f9 /components/layout
parentf605c6aa69e34fcd5734350759969bfac2098952 (diff)
downloadservo-7c5b2d6cb3ee4f934e529162be368c36a7f590a4.tar.gz
servo-7c5b2d6cb3ee4f934e529162be368c36a7f590a4.zip
layout: Separate out overflow-for-scrolling from overflow-for-paint.
Closes #9484.
Diffstat (limited to 'components/layout')
-rw-r--r--components/layout/block.rs4
-rw-r--r--components/layout/display_list_builder.rs4
-rw-r--r--components/layout/flex.rs6
-rw-r--r--components/layout/flow.rs17
-rw-r--r--components/layout/fragment.rs53
-rw-r--r--components/layout/inline.rs12
-rw-r--r--components/layout/layout_thread.rs2
-rw-r--r--components/layout/list_item.rs7
-rw-r--r--components/layout/multicol.rs8
-rw-r--r--components/layout/table.rs6
-rw-r--r--components/layout/table_caption.rs6
-rw-r--r--components/layout/table_cell.rs4
-rw-r--r--components/layout/table_colgroup.rs8
-rw-r--r--components/layout/table_row.rs6
-rw-r--r--components/layout/table_rowgroup.rs6
-rw-r--r--components/layout/table_wrapper.rs6
16 files changed, 99 insertions, 56 deletions
diff --git a/components/layout/block.rs b/components/layout/block.rs
index 2e7a4e935a2..c26cd450b74 100644
--- a/components/layout/block.rs
+++ b/components/layout/block.rs
@@ -43,7 +43,7 @@ use flow::{NEEDS_LAYER, PostorderFlowTraversal, PreorderFlowTraversal, Fragmenta
use flow::{self, BaseFlow, EarlyAbsolutePositionInfo, Flow, FlowClass, ForceNonfloatedFlag};
use flow_list::FlowList;
use flow_ref::FlowRef;
-use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, HAS_LAYER};
+use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, HAS_LAYER, Overflow};
use fragment::{SpecificFragmentInfo};
use gfx::display_list::{ClippingRegion, DisplayList};
use gfx_traits::LayerId;
@@ -2098,7 +2098,7 @@ impl Flow for BlockFlow {
self.fragment.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
let flow_size = self.base.position.size.to_physical(self.base.writing_mode);
self.fragment.compute_overflow(&flow_size,
&self.base
diff --git a/components/layout/display_list_builder.rs b/components/layout/display_list_builder.rs
index a04c4cd811d..93b74f368ef 100644
--- a/components/layout/display_list_builder.rs
+++ b/components/layout/display_list_builder.rs
@@ -1218,7 +1218,7 @@ impl FragmentDisplayListBuilding for Fragment {
CoordinateSystem::Parent)
}
StackingContextCreationMode::InnerScrollWrapper => {
- Rect::new(Point2D::zero(), base_flow.overflow.size)
+ Rect::new(Point2D::zero(), base_flow.overflow.scroll.size)
}
};
let overflow = match mode {
@@ -1228,7 +1228,7 @@ impl FragmentDisplayListBuilding for Fragment {
let border_box_offset =
border_box.translate(&-base_flow.stacking_relative_position).origin;
// Then, using that, compute our overflow region relative to our border box.
- base_flow.overflow.translate(&-border_box_offset)
+ base_flow.overflow.paint.translate(&-border_box_offset)
}
StackingContextCreationMode::InnerScrollWrapper |
StackingContextCreationMode::OuterScrollWrapper => {
diff --git a/components/layout/flex.rs b/components/layout/flex.rs
index 8a3172b99f5..61151ddd6a9 100644
--- a/components/layout/flex.rs
+++ b/components/layout/flex.rs
@@ -10,7 +10,7 @@ use app_units::Au;
use block::BlockFlow;
use context::LayoutContext;
use display_list_builder::FlexFlowDisplayListBuilding;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use floats::FloatKind;
use flow;
use flow::INLINE_POSITION_IS_STATIC;
@@ -18,7 +18,7 @@ use flow::IS_ABSOLUTELY_POSITIONED;
use flow::ImmutableFlowUtils;
use flow::{Flow, FlowClass, OpaqueFlow};
use flow::{HAS_LEFT_FLOATED_DESCENDANTS, HAS_RIGHT_FLOATED_DESCENDANTS};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx::display_list::DisplayList;
use incremental::{REFLOW, REFLOW_OUT_OF_FLOW};
use layout_debug;
@@ -432,7 +432,7 @@ impl Flow for FlexFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/flow.rs b/components/layout/flow.rs
index 215e25bd731..d59d7f38123 100644
--- a/components/layout/flow.rs
+++ b/components/layout/flow.rs
@@ -32,7 +32,7 @@ use euclid::{Point2D, Rect, Size2D};
use floats::Floats;
use flow_list::{FlowList, FlowListIterator, MutFlowListIterator};
use flow_ref::{self, FlowRef, WeakFlowRef};
-use fragment::{Fragment, FragmentBorderBoxIterator, SpecificFragmentInfo};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow, SpecificFragmentInfo};
use gfx::display_list::{ClippingRegion, DisplayList};
use gfx_traits::{LayerId, LayerType};
use incremental::{RECONSTRUCT_FLOW, REFLOW, REFLOW_OUT_OF_FLOW, REPAINT, RestyleDamage};
@@ -266,15 +266,16 @@ pub trait Flow: fmt::Debug + Sync + Send + 'static {
// FIXME(#2795): Get the real container size.
let container_size = Size2D::zero();
for kid in mut_base(self).children.iter_mut() {
- let kid_overflow = base(kid).overflow;
+ let mut kid_overflow = base(kid).overflow;
let kid_position = base(kid).position.to_physical(base(kid).writing_mode,
container_size);
- overflow = overflow.union(&kid_overflow.translate(&kid_position.origin))
+ kid_overflow.translate(&kid_position.origin);
+ overflow.union(&kid_overflow)
}
}
_ => {}
}
- mut_base(self).overflow = overflow;
+ mut_base(self).overflow = overflow
}
/// Phase 4 of reflow: computes absolute positions.
@@ -286,7 +287,7 @@ pub trait Flow: fmt::Debug + Sync + Send + 'static {
fn build_display_list(&mut self, layout_context: &LayoutContext);
/// Returns the union of all overflow rects of all of this flow's fragments.
- fn compute_overflow(&self) -> Rect<Au>;
+ fn compute_overflow(&self) -> Overflow;
/// Iterates through border boxes of all of this flow's fragments.
/// Level provides a zero based index indicating the current
@@ -865,7 +866,7 @@ pub struct BaseFlow {
/// The amount of overflow of this flow, relative to the containing block. Must include all the
/// pixels of all the display list items for correct invalidation.
- pub overflow: Rect<Au>,
+ pub overflow: Overflow,
/// Data used during parallel traversals.
///
@@ -1078,7 +1079,7 @@ impl BaseFlow {
children: FlowList::new(),
intrinsic_inline_sizes: IntrinsicISizes::new(),
position: LogicalRect::zero(writing_mode),
- overflow: Rect::zero(),
+ overflow: Overflow::new(),
parallel: FlowParallelInfo::new(),
floats: Floats::new(writing_mode),
collapsible_margins: CollapsibleMargins::new(),
@@ -1132,7 +1133,7 @@ impl BaseFlow {
let container_size = Size2D::zero();
let position_with_overflow = self.position
.to_physical(self.writing_mode, container_size)
- .union(&self.overflow);
+ .union(&self.overflow.paint);
let bounds = Rect::new(self.stacking_relative_position, position_with_overflow.size);
let all_items = match self.display_list_building_result {
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index 45ffac1c659..692bffd3afd 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -2176,7 +2176,7 @@ impl Fragment {
pub fn compute_overflow(&self,
flow_size: &Size2D<Au>,
relative_containing_block_size: &LogicalSize<Au>)
- -> Rect<Au> {
+ -> Overflow {
let mut border_box = self.border_box.to_physical(self.style.writing_mode, *flow_size);
// Relative position can cause us to draw outside our border box.
@@ -2186,31 +2186,33 @@ impl Fragment {
let relative_position = self.relative_position(relative_containing_block_size);
border_box =
border_box.translate_by_size(&relative_position.to_physical(self.style.writing_mode));
- let mut overflow = border_box;
+ let mut overflow = Overflow::from_rect(&border_box);
// Box shadows cause us to draw outside our border box.
for box_shadow in &self.style().get_effects().box_shadow.0 {
let offset = Point2D::new(box_shadow.offset_x, box_shadow.offset_y);
let inflation = box_shadow.spread_radius + box_shadow.blur_radius *
BLUR_INFLATION_FACTOR;
- overflow = overflow.union(&border_box.translate(&offset).inflate(inflation, inflation))
+ overflow.paint = overflow.paint.union(&border_box.translate(&offset)
+ .inflate(inflation, inflation))
}
// Outlines cause us to draw outside our border box.
let outline_width = self.style.get_outline().outline_width;
if outline_width != Au(0) {
- overflow = overflow.union(&border_box.inflate(outline_width, outline_width))
+ overflow.paint = overflow.paint.union(&border_box.inflate(outline_width,
+ outline_width))
}
// Include the overflow of the block flow, if any.
match self.specific {
SpecificFragmentInfo::InlineBlock(ref info) => {
let block_flow = info.flow_ref.as_block();
- overflow = overflow.union(&flow::base(block_flow).overflow);
+ overflow.union(&flow::base(block_flow).overflow);
}
SpecificFragmentInfo::InlineAbsolute(ref info) => {
let block_flow = info.flow_ref.as_block();
- overflow = overflow.union(&flow::base(block_flow).overflow);
+ overflow.union(&flow::base(block_flow).overflow);
}
_ => (),
}
@@ -2572,6 +2574,45 @@ impl WhitespaceStrippingResult {
}
}
+/// The overflow area. We need two different notions of overflow: paint overflow and scrollable
+/// overflow.
+#[derive(Copy, Clone, Debug)]
+pub struct Overflow {
+ pub scroll: Rect<Au>,
+ pub paint: Rect<Au>,
+}
+
+impl Overflow {
+ pub fn new() -> Overflow {
+ Overflow {
+ scroll: Rect::zero(),
+ paint: Rect::zero(),
+ }
+ }
+
+ pub fn from_rect(border_box: &Rect<Au>) -> Overflow {
+ Overflow {
+ scroll: *border_box,
+ paint: *border_box,
+ }
+ }
+
+ pub fn union(&mut self, other: &Overflow) {
+ self.scroll = self.scroll.union(&other.scroll);
+ self.paint = self.paint.union(&other.paint);
+ }
+
+ pub fn union_rect(&mut self, rect: &Rect<Au>) {
+ self.scroll = self.scroll.union(&rect);
+ self.paint = self.paint.union(&rect);
+ }
+
+ pub fn translate(&mut self, point: &Point2D<Au>) {
+ self.scroll = self.scroll.translate(point);
+ self.paint = self.paint.translate(point);
+ }
+}
+
bitflags! {
flags FragmentFlags: u8 {
/// Whether this fragment has a layer.
diff --git a/components/layout/inline.rs b/components/layout/inline.rs
index 9f77ecfcb9e..d20fb2224a1 100644
--- a/components/layout/inline.rs
+++ b/components/layout/inline.rs
@@ -8,12 +8,13 @@ use app_units::Au;
use block::AbsoluteAssignBSizesTraversal;
use context::LayoutContext;
use display_list_builder::{FragmentDisplayListBuilding, InlineFlowDisplayListBuilding};
-use euclid::{Point2D, Rect, Size2D};
+use euclid::{Point2D, Size2D};
use floats::{FloatKind, Floats, PlacementInfo};
use flow::{EarlyAbsolutePositionInfo, MutableFlowUtils, OpaqueFlow};
use flow::{self, BaseFlow, Flow, FlowClass, ForceNonfloatedFlag, IS_ABSOLUTELY_POSITIONED};
use flow_ref;
-use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, SpecificFragmentInfo};
+use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, Overflow};
+use fragment::{SpecificFragmentInfo};
use gfx::display_list::OpaqueNode;
use gfx::font::FontMetrics;
use gfx::font_context::FontContext;
@@ -1756,14 +1757,13 @@ impl Flow for InlineFlow {
fn repair_style(&mut self, _: &Arc<ComputedValues>) {}
- fn compute_overflow(&self) -> Rect<Au> {
- let mut overflow = Rect::zero();
+ fn compute_overflow(&self) -> Overflow {
+ let mut overflow = Overflow::new();
let flow_size = self.base.position.size.to_physical(self.base.writing_mode);
let relative_containing_block_size =
&self.base.early_absolute_position_info.relative_containing_block_size;
for fragment in &self.fragments.fragments {
- overflow = overflow.union(&fragment.compute_overflow(&flow_size,
- &relative_containing_block_size))
+ overflow.union(&fragment.compute_overflow(&flow_size, &relative_containing_block_size))
}
overflow
}
diff --git a/components/layout/layout_thread.rs b/components/layout/layout_thread.rs
index 206bfe4c82d..bc34adf562f 100644
--- a/components/layout/layout_thread.rs
+++ b/components/layout/layout_thread.rs
@@ -865,7 +865,7 @@ impl LayoutThread {
if rw_data.stylist.viewport_constraints().is_some() {
root_flow.position.size.to_physical(root_flow.writing_mode)
} else {
- root_flow.overflow.size
+ root_flow.overflow.scroll.size
}
};
let mut display_list = box DisplayList::new();
diff --git a/components/layout/list_item.rs b/components/layout/list_item.rs
index 7ea9ebd0fdc..95978c6c7ae 100644
--- a/components/layout/list_item.rs
+++ b/components/layout/list_item.rs
@@ -11,10 +11,11 @@ use app_units::Au;
use block::BlockFlow;
use context::LayoutContext;
use display_list_builder::ListItemFlowDisplayListBuilding;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use floats::FloatKind;
use flow::{Flow, FlowClass, OpaqueFlow};
use fragment::{CoordinateSystem, Fragment, FragmentBorderBoxIterator, GeneratedContentInfo};
+use fragment::{Overflow};
use generated_content;
use gfx::display_list::DisplayList;
use incremental::RESOLVE_GENERATED_CONTENT;
@@ -152,14 +153,14 @@ impl Flow for ListItemFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
let mut overflow = self.block_flow.compute_overflow();
let flow_size = self.block_flow.base.position.size.to_physical(self.block_flow.base.writing_mode);
let relative_containing_block_size =
&self.block_flow.base.early_absolute_position_info.relative_containing_block_size;
for fragment in &self.marker_fragments {
- overflow = overflow.union(&fragment.compute_overflow(&flow_size, &relative_containing_block_size))
+ overflow.union(&fragment.compute_overflow(&flow_size, &relative_containing_block_size))
}
overflow
}
diff --git a/components/layout/multicol.rs b/components/layout/multicol.rs
index 196a65715d6..93ecbe26c29 100644
--- a/components/layout/multicol.rs
+++ b/components/layout/multicol.rs
@@ -9,11 +9,11 @@
use app_units::Au;
use block::BlockFlow;
use context::LayoutContext;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use floats::FloatKind;
use flow::{Flow, FlowClass, OpaqueFlow, mut_base, FragmentationContext};
use flow_ref::{self, FlowRef};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use std::cmp::{min, max};
use std::fmt;
use std::sync::Arc;
@@ -186,7 +186,7 @@ impl Flow for MulticolFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
@@ -264,7 +264,7 @@ impl Flow for MulticolColumnFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table.rs b/components/layout/table.rs
index f8b07e72b14..e8a8998b14d 100644
--- a/components/layout/table.rs
+++ b/components/layout/table.rs
@@ -11,10 +11,10 @@ use block::{BlockFlow, CandidateBSizeIterator, ISizeAndMarginsComputer};
use block::{ISizeConstraintInput, ISizeConstraintSolution};
use context::LayoutContext;
use display_list_builder::{BlockFlowDisplayListBuilding, BorderPaintingMode};
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use flow::{IMPACTED_BY_RIGHT_FLOATS, ImmutableFlowUtils, OpaqueFlow};
use flow::{self, EarlyAbsolutePositionInfo, Flow, FlowClass, IMPACTED_BY_LEFT_FLOATS};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx::display_list::DisplayList;
use incremental::{REFLOW, REFLOW_OUT_OF_FLOW};
use layout_debug;
@@ -536,7 +536,7 @@ impl Flow for TableFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table_caption.rs b/components/layout/table_caption.rs
index 287c1c617e1..1b764360201 100644
--- a/components/layout/table_caption.rs
+++ b/components/layout/table_caption.rs
@@ -9,9 +9,9 @@
use app_units::Au;
use block::BlockFlow;
use context::LayoutContext;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use flow::{Flow, FlowClass, OpaqueFlow};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use std::fmt;
use std::sync::Arc;
use style::properties::ComputedValues;
@@ -83,7 +83,7 @@ impl Flow for TableCaptionFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table_cell.rs b/components/layout/table_cell.rs
index cfd66e26bef..51d15187fd7 100644
--- a/components/layout/table_cell.rs
+++ b/components/layout/table_cell.rs
@@ -13,7 +13,7 @@ use cssparser::Color;
use display_list_builder::{BlockFlowDisplayListBuilding, BorderPaintingMode};
use euclid::{Point2D, Rect, SideOffsets2D, Size2D};
use flow::{Flow, FlowClass, OpaqueFlow};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx::display_list::DisplayList;
use layout_debug;
use model::MaybeAuto;
@@ -197,7 +197,7 @@ impl Flow for TableCellFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table_colgroup.rs b/components/layout/table_colgroup.rs
index 4b6dd537fe0..bcee65b2564 100644
--- a/components/layout/table_colgroup.rs
+++ b/components/layout/table_colgroup.rs
@@ -8,9 +8,9 @@
use app_units::Au;
use context::LayoutContext;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use flow::{BaseFlow, Flow, FlowClass, ForceNonfloatedFlag, OpaqueFlow};
-use fragment::{Fragment, FragmentBorderBoxIterator, SpecificFragmentInfo};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow, SpecificFragmentInfo};
use layout_debug;
use std::cmp::max;
use std::fmt;
@@ -94,8 +94,8 @@ impl Flow for TableColGroupFlow {
fn repair_style(&mut self, _: &Arc<ComputedValues>) {}
- fn compute_overflow(&self) -> Rect<Au> {
- Rect::zero()
+ fn compute_overflow(&self) -> Overflow {
+ Overflow::new()
}
fn generated_containing_block_size(&self, _: OpaqueFlow) -> LogicalSize<Au> {
diff --git a/components/layout/table_row.rs b/components/layout/table_row.rs
index c3b318acd61..13dc123958e 100644
--- a/components/layout/table_row.rs
+++ b/components/layout/table_row.rs
@@ -11,10 +11,10 @@ use block::{BlockFlow, ISizeAndMarginsComputer};
use context::LayoutContext;
use cssparser::{Color, RGBA};
use display_list_builder::{BlockFlowDisplayListBuilding, BorderPaintingMode};
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use flow::{self, EarlyAbsolutePositionInfo, Flow, FlowClass, ImmutableFlowUtils, OpaqueFlow};
use flow_list::MutFlowListIterator;
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx::display_list::DisplayList;
use layout_debug;
use model::MaybeAuto;
@@ -439,7 +439,7 @@ impl Flow for TableRowFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table_rowgroup.rs b/components/layout/table_rowgroup.rs
index 66a3f9ac029..9a9e9b59eb0 100644
--- a/components/layout/table_rowgroup.rs
+++ b/components/layout/table_rowgroup.rs
@@ -9,9 +9,9 @@
use app_units::Au;
use block::{BlockFlow, ISizeAndMarginsComputer};
use context::LayoutContext;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use flow::{Flow, FlowClass, OpaqueFlow};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use layout_debug;
use rustc_serialize::{Encodable, Encoder};
use std::fmt;
@@ -217,7 +217,7 @@ impl Flow for TableRowGroupFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}
diff --git a/components/layout/table_wrapper.rs b/components/layout/table_wrapper.rs
index 02cc1b768fb..a6ab4a2c282 100644
--- a/components/layout/table_wrapper.rs
+++ b/components/layout/table_wrapper.rs
@@ -17,11 +17,11 @@ use app_units::Au;
use block::{AbsoluteNonReplaced, BlockFlow, FloatNonReplaced, ISizeAndMarginsComputer, ISizeConstraintInput};
use block::{ISizeConstraintSolution, MarginsMayCollapseFlag};
use context::LayoutContext;
-use euclid::{Point2D, Rect};
+use euclid::Point2D;
use floats::FloatKind;
use flow::{Flow, FlowClass, ImmutableFlowUtils};
use flow::{IMPACTED_BY_LEFT_FLOATS, IMPACTED_BY_RIGHT_FLOATS, INLINE_POSITION_IS_STATIC, OpaqueFlow};
-use fragment::{Fragment, FragmentBorderBoxIterator};
+use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use model::MaybeAuto;
use std::cmp::{max, min};
use std::fmt;
@@ -451,7 +451,7 @@ impl Flow for TableWrapperFlow {
self.block_flow.repair_style(new_style)
}
- fn compute_overflow(&self) -> Rect<Au> {
+ fn compute_overflow(&self) -> Overflow {
self.block_flow.compute_overflow()
}