layout: Don't use BlockFlow::assign_block_size() when assigning flex

flows' block sizes.

This ensures that we never collapse margins for flex flows.
This commit is contained in:
Patrick Walton 2016-10-24 18:03:16 -07:00
parent 1ab56c0ccd
commit 3d645a9253

View file

@ -7,7 +7,7 @@
#![deny(unsafe_code)] #![deny(unsafe_code)]
use app_units::{Au, MAX_AU}; use app_units::{Au, MAX_AU};
use block::BlockFlow; use block::{BlockFlow, MarginsMayCollapseFlag};
use context::{LayoutContext, SharedLayoutContext}; use context::{LayoutContext, SharedLayoutContext};
use display_list_builder::{DisplayListBuildState, FlexFlowDisplayListBuilding}; use display_list_builder::{DisplayListBuildState, FlexFlowDisplayListBuilding};
use euclid::Point2D; use euclid::Point2D;
@ -648,7 +648,7 @@ impl FlexFlow {
} }
// TODO(zentner): This function should actually flex elements! // 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 { let mut cur_b = if !self.main_reverse {
self.block_flow.fragment.border_padding.block_start self.block_flow.fragment.border_padding.block_start
} else { } else {
@ -666,7 +666,6 @@ impl FlexFlow {
base.position.start.b = cur_b; 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>) { 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>) { 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 { match self.main_mode {
Direction::Inline => self.inline_mode_assign_block_size(layout_context), Direction::Inline => self.inline_mode_assign_block_size(layout_context),
Direction::Block => self.block_mode_assign_block_size(), Direction::Block => self.block_mode_assign_block_size(),