diff options
Diffstat (limited to 'components/layout_2020/table/layout.rs')
-rw-r--r-- | components/layout_2020/table/layout.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/components/layout_2020/table/layout.rs b/components/layout_2020/table/layout.rs index 29014ae171c..ed35cff6049 100644 --- a/components/layout_2020/table/layout.rs +++ b/components/layout_2020/table/layout.rs @@ -29,7 +29,7 @@ use super::{ TableLayoutStyle, TableSlot, TableSlotCell, TableSlotCoordinates, TableTrack, TableTrackGroup, }; use crate::context::LayoutContext; -use crate::formatting_contexts::{Baselines, IndependentLayout}; +use crate::formatting_contexts::Baselines; use crate::fragment_tree::{ BaseFragmentInfo, BoxFragment, CollapsedBlockMargins, ExtraBackground, Fragment, FragmentFlags, PositioningFragment, SpecificLayoutInfo, @@ -38,6 +38,7 @@ use crate::geom::{ LogicalRect, LogicalSides, LogicalSides1D, LogicalVec2, PhysicalPoint, PhysicalRect, PhysicalSides, PhysicalVec, Size, SizeConstraint, ToLogical, ToLogicalWithContainingBlock, }; +use crate::layout_box_base::CacheableLayoutResult; use crate::positioned::{PositioningContext, PositioningContextLength, relative_adjustement}; use crate::sizing::{ComputeInlineContentSizes, ContentSizes, InlineContentSizesResult}; use crate::style_ext::{ @@ -51,7 +52,7 @@ use crate::{ /// the table. Note that this is only done for slots that are not /// covered by spans or empty. struct CellLayout { - layout: IndependentLayout, + layout: CacheableLayoutResult, padding: LogicalSides<Au>, border: LogicalSides<Au>, positioning_context: PositioningContext, @@ -1137,6 +1138,7 @@ impl<'a> TableLayout<'a> { layout_context, &mut positioning_context, &containing_block_for_children, + false, /* depends_on_block_constraints */ ); Some(CellLayout { @@ -1539,13 +1541,15 @@ impl<'a> TableLayout<'a> { positioning_context: &mut PositioningContext, containing_block_for_children: &ContainingBlock, containing_block_for_table: &ContainingBlock, - ) -> IndependentLayout { + depends_on_block_constraints: bool, + ) -> CacheableLayoutResult { let table_writing_mode = containing_block_for_children.style.writing_mode; self.compute_border_collapse(table_writing_mode); let layout_style = self.table.layout_style(Some(&self)); - let depends_on_block_constraints = layout_style - .content_box_sizes_and_padding_border_margin(&containing_block_for_table.into()) - .depends_on_block_constraints; + let depends_on_block_constraints = depends_on_block_constraints || + layout_style + .content_box_sizes_and_padding_border_margin(&containing_block_for_table.into()) + .depends_on_block_constraints; self.pbm = layout_style .padding_border_margin_with_writing_mode_and_containing_block_inline_size( @@ -1579,13 +1583,14 @@ impl<'a> TableLayout<'a> { let offset_from_wrapper = -self.pbm.padding - self.pbm.border; let mut current_block_offset = offset_from_wrapper.block_start; - let mut table_layout = IndependentLayout { + let mut table_layout = CacheableLayoutResult { fragments: Vec::new(), content_block_size: Zero::zero(), content_inline_size_for_table: None, baselines: Baselines::default(), depends_on_block_constraints, specific_layout_info: Some(SpecificLayoutInfo::TableWrapper), + collapsible_margins_in_children: CollapsedBlockMargins::zero(), }; table_layout @@ -2664,12 +2669,14 @@ impl Table { positioning_context: &mut PositioningContext, containing_block_for_children: &ContainingBlock, containing_block_for_table: &ContainingBlock, - ) -> IndependentLayout { + depends_on_block_constraints: bool, + ) -> CacheableLayoutResult { TableLayout::new(self).layout( layout_context, positioning_context, containing_block_for_children, containing_block_for_table, + depends_on_block_constraints, ) } } |