From 3d645a92533f87567e14ec00969f846d4871e0cd Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 24 Oct 2016 18:03:16 -0700 Subject: [PATCH] layout: Don't use `BlockFlow::assign_block_size()` when assigning flex flows' block sizes. This ensures that we never collapse margins for flex flows. --- components/layout/flex.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/components/layout/flex.rs b/components/layout/flex.rs index 12a70e7d799..69ae5a7bf49 100644 --- a/components/layout/flex.rs +++ b/components/layout/flex.rs @@ -7,7 +7,7 @@ #![deny(unsafe_code)] use app_units::{Au, MAX_AU}; -use block::BlockFlow; +use block::{BlockFlow, MarginsMayCollapseFlag}; use context::{LayoutContext, SharedLayoutContext}; use display_list_builder::{DisplayListBuildState, FlexFlowDisplayListBuilding}; use euclid::Point2D; @@ -648,7 +648,7 @@ impl FlexFlow { } // TODO(zentner): This function should actually flex elements! - fn block_mode_assign_block_size<'a>(&mut self, layout_context: &'a LayoutContext<'a>) { + fn block_mode_assign_block_size(&mut self) { let mut cur_b = if !self.main_reverse { self.block_flow.fragment.border_padding.block_start } else { @@ -666,7 +666,6 @@ impl FlexFlow { base.position.start.b = cur_b; } } - self.block_flow.assign_block_size(layout_context) } fn inline_mode_assign_block_size<'a>(&mut self, layout_context: &'a LayoutContext<'a>) { @@ -927,7 +926,10 @@ impl Flow for FlexFlow { } fn assign_block_size<'a>(&mut self, layout_context: &'a LayoutContext<'a>) { - self.block_flow.assign_block_size(layout_context); + self.block_flow + .assign_block_size_block_base(layout_context, + None, + MarginsMayCollapseFlag::MarginsMayNotCollapse); match self.main_mode { Direction::Inline => self.inline_mode_assign_block_size(layout_context), Direction::Block => self.block_mode_assign_block_size(),