diff --git a/components/layout/block.rs b/components/layout/block.rs index b860d8347d1..df1f001076f 100644 --- a/components/layout/block.rs +++ b/components/layout/block.rs @@ -533,7 +533,12 @@ impl Encodable for BlockFlowFlags { } impl BlockFlow { - pub fn from_fragment(fragment: Fragment, float_kind: Option) -> BlockFlow { + pub fn from_fragment(fragment: Fragment) -> BlockFlow { + BlockFlow::from_fragment_and_float_kind(fragment, None) + } + + pub fn from_fragment_and_float_kind(fragment: Fragment, float_kind: Option) + -> BlockFlow { let writing_mode = fragment.style().writing_mode; BlockFlow { base: BaseFlow::new(Some(fragment.style()), writing_mode, match float_kind { diff --git a/components/layout/construct.rs b/components/layout/construct.rs index f9b2d61ab91..70e2d2c8130 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -768,8 +768,9 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> return self.build_flow_for_multicol(node, float_kind) } - let flow: FlowRef = Arc::new( - BlockFlow::from_fragment(self.build_fragment_for_block(node), float_kind)); + let fragment = self.build_fragment_for_block(node); + let flow: FlowRef = + Arc::new(BlockFlow::from_fragment_and_float_kind(fragment, float_kind)); self.build_flow_for_block_like(flow, node) } @@ -1165,7 +1166,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> -> ConstructionResult { let fragment = Fragment::new(node, SpecificFragmentInfo::TableWrapper, self.layout_context); let mut wrapper_flow: FlowRef = Arc::new( - TableWrapperFlow::from_fragment(fragment, FloatKind::from_property(float_value))); + TableWrapperFlow::from_fragment_and_float_kind(fragment, FloatKind::from_property(float_value))); let table_fragment = Fragment::new(node, SpecificFragmentInfo::Table, self.layout_context); let table_flow = Arc::new(TableFlow::from_fragment(table_fragment)); diff --git a/components/layout/flex.rs b/components/layout/flex.rs index bce1e0f099f..fe15b30f43c 100644 --- a/components/layout/flex.rs +++ b/components/layout/flex.rs @@ -382,7 +382,7 @@ impl FlexFlow { } FlexFlow { - block_flow: BlockFlow::from_fragment(fragment, flotation), + block_flow: BlockFlow::from_fragment_and_float_kind(fragment, flotation), main_mode: main_mode, available_main_size: AxisSize::Infinite, available_cross_size: AxisSize::Infinite, diff --git a/components/layout/list_item.rs b/components/layout/list_item.rs index 75f42016076..50318f65457 100644 --- a/components/layout/list_item.rs +++ b/components/layout/list_item.rs @@ -42,7 +42,7 @@ impl ListItemFlow { flotation: Option) -> ListItemFlow { let mut this = ListItemFlow { - block_flow: BlockFlow::from_fragment(main_fragment, flotation), + block_flow: BlockFlow::from_fragment_and_float_kind(main_fragment, flotation), marker_fragments: marker_fragments, }; diff --git a/components/layout/multicol.rs b/components/layout/multicol.rs index b2283ad9015..669f3a59530 100644 --- a/components/layout/multicol.rs +++ b/components/layout/multicol.rs @@ -41,7 +41,7 @@ pub struct MulticolColumnFlow { impl MulticolFlow { pub fn from_fragment(fragment: Fragment, float_kind: Option) -> MulticolFlow { MulticolFlow { - block_flow: BlockFlow::from_fragment(fragment, float_kind), + block_flow: BlockFlow::from_fragment_and_float_kind(fragment, float_kind), column_pitch: Au(0), } } @@ -50,7 +50,7 @@ impl MulticolFlow { impl MulticolColumnFlow { pub fn from_fragment(fragment: Fragment) -> MulticolColumnFlow { MulticolColumnFlow { - block_flow: BlockFlow::from_fragment(fragment, None), + block_flow: BlockFlow::from_fragment(fragment), } } } diff --git a/components/layout/table.rs b/components/layout/table.rs index ab7c5e9f12e..2d31f92dda7 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -63,7 +63,7 @@ pub struct TableFlow { impl TableFlow { pub fn from_fragment(fragment: Fragment) -> TableFlow { - let mut block_flow = BlockFlow::from_fragment(fragment, None); + let mut block_flow = BlockFlow::from_fragment(fragment); let table_layout = if block_flow.fragment().style().get_table().table_layout == table_layout::T::fixed { TableLayout::Fixed diff --git a/components/layout/table_caption.rs b/components/layout/table_caption.rs index 13e92903582..3487aac0f5e 100644 --- a/components/layout/table_caption.rs +++ b/components/layout/table_caption.rs @@ -29,7 +29,7 @@ pub struct TableCaptionFlow { impl TableCaptionFlow { pub fn from_fragment(fragment: Fragment) -> TableCaptionFlow { TableCaptionFlow { - block_flow: BlockFlow::from_fragment(fragment, None) + block_flow: BlockFlow::from_fragment(fragment), } } } diff --git a/components/layout/table_cell.rs b/components/layout/table_cell.rs index 62d5608023d..8e6394b9a75 100644 --- a/components/layout/table_cell.rs +++ b/components/layout/table_cell.rs @@ -46,10 +46,19 @@ pub struct TableCellFlow { } impl TableCellFlow { + pub fn from_fragment(fragment: Fragment) -> TableCellFlow { + TableCellFlow { + block_flow: BlockFlow::from_fragment(fragment), + collapsed_borders: CollapsedBordersForCell::new(), + column_span: 1, + visible: true, + } + } + pub fn from_node_fragment_and_visibility_flag( node: &N, fragment: Fragment, visible: bool) -> TableCellFlow { TableCellFlow { - block_flow: BlockFlow::from_fragment(fragment, None), + block_flow: BlockFlow::from_fragment(fragment), collapsed_borders: CollapsedBordersForCell::new(), column_span: node.get_colspan(), visible: visible, diff --git a/components/layout/table_row.rs b/components/layout/table_row.rs index 17db349c41f..eb0b575cfa7 100644 --- a/components/layout/table_row.rs +++ b/components/layout/table_row.rs @@ -84,7 +84,7 @@ impl TableRowFlow { pub fn from_fragment(fragment: Fragment) -> TableRowFlow { let writing_mode = fragment.style().writing_mode; TableRowFlow { - block_flow: BlockFlow::from_fragment(fragment, None), + block_flow: BlockFlow::from_fragment(fragment), cell_intrinsic_inline_sizes: Vec::new(), column_computed_inline_sizes: Vec::new(), spacing: border_spacing::T { diff --git a/components/layout/table_rowgroup.rs b/components/layout/table_rowgroup.rs index 0d5b6363783..00a31a6bafe 100644 --- a/components/layout/table_rowgroup.rs +++ b/components/layout/table_rowgroup.rs @@ -64,7 +64,7 @@ impl TableRowGroupFlow { pub fn from_fragment(fragment: Fragment) -> TableRowGroupFlow { let writing_mode = fragment.style().writing_mode; TableRowGroupFlow { - block_flow: BlockFlow::from_fragment(fragment, None), + block_flow: BlockFlow::from_fragment(fragment), column_intrinsic_inline_sizes: Vec::new(), column_computed_inline_sizes: Vec::new(), spacing: border_spacing::T { diff --git a/components/layout/table_wrapper.rs b/components/layout/table_wrapper.rs index ad5dcb776b3..e57eef4d083 100644 --- a/components/layout/table_wrapper.rs +++ b/components/layout/table_wrapper.rs @@ -57,8 +57,13 @@ pub struct TableWrapperFlow { } impl TableWrapperFlow { - pub fn from_fragment(fragment: Fragment, float_kind: Option) -> TableWrapperFlow { - let mut block_flow = BlockFlow::from_fragment(fragment, float_kind); + pub fn from_fragment(fragment: Fragment) -> TableWrapperFlow { + TableWrapperFlow::from_fragment_and_float_kind(fragment, None) + } + + pub fn from_fragment_and_float_kind(fragment: Fragment, float_kind: Option) + -> TableWrapperFlow { + let mut block_flow = BlockFlow::from_fragment_and_float_kind(fragment, float_kind); let table_layout = if block_flow.fragment().style().get_table().table_layout == table_layout::T::fixed { TableLayout::Fixed