| Index: Source/core/rendering/RenderBlockFlow.cpp
|
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp
|
| index c377df7c9a8cd3c3d2dd0244a9f67aa80f9d1ba0..84707a62709d017f10bf0b77de88dbf96687fd10 100644
|
| --- a/Source/core/rendering/RenderBlockFlow.cpp
|
| +++ b/Source/core/rendering/RenderBlockFlow.cpp
|
| @@ -1067,7 +1067,12 @@ void RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, SubtreeLayoutSc
|
| if (child->isColumnSpanAll()) {
|
| // This is not the containing block of the spanner. The spanner's placeholder will lay
|
| // it out in due course. For now we just need to consult our flow thread, so that the
|
| - // columns (if any) preceding and following the spanner are laid out correctly.
|
| + // columns (if any) preceding and following the spanner are laid out correctly. But
|
| + // first we apply the pending margin, so that it's taken into consideration and doesn't
|
| + // end up on the other side of the spanner.
|
| + setLogicalHeight(logicalHeight() + marginInfo.margin());
|
| + marginInfo.clearMargin();
|
| +
|
| LayoutUnit adjustment = flowThreadContainingBlock()->skipColumnSpanner(child, offsetFromLogicalTopOfFirstPage() + logicalHeight());
|
| setLogicalHeight(logicalHeight() + adjustment);
|
| continue;
|
| @@ -1477,7 +1482,7 @@ void RenderBlockFlow::marginBeforeEstimateForChild(RenderBox& child, LayoutUnit&
|
|
|
| RenderBox* grandchildBox = childBlockFlow->firstChildBox();
|
| for ( ; grandchildBox; grandchildBox = grandchildBox->nextSiblingBox()) {
|
| - if (!grandchildBox->isFloatingOrOutOfFlowPositioned())
|
| + if (!grandchildBox->isFloatingOrOutOfFlowPositioned() && !grandchildBox->isColumnSpanAll())
|
| break;
|
| }
|
|
|
|
|