Chromium Code Reviews| Index: Source/core/rendering/RenderBlockFlow.cpp |
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp |
| index ace7c2d43f56633d9b8cdfd3900a51c68c072d3d..580c9b24546acd287f74bac660d43a247f1084a8 100644 |
| --- a/Source/core/rendering/RenderBlockFlow.cpp |
| +++ b/Source/core/rendering/RenderBlockFlow.cpp |
| @@ -42,6 +42,7 @@ |
| #include "core/rendering/RenderFlowThread.h" |
| #include "core/rendering/RenderLayer.h" |
| #include "core/rendering/RenderMultiColumnFlowThread.h" |
| +#include "core/rendering/RenderMultiColumnSpannerPlaceholder.h" |
| #include "core/rendering/RenderPagedFlowThread.h" |
| #include "core/rendering/RenderText.h" |
| #include "core/rendering/RenderView.h" |
| @@ -1057,6 +1058,11 @@ void RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, SubtreeLayoutSc |
| adjustFloatingBlock(marginInfo); |
| continue; |
| } |
| + if (child->isColumnSpanAll()) { |
| + // This is not the containing block of the spanner. The spanner's placeholder will lay |
| + // it out in due course. |
| + continue; |
| + } |
|
Julien - ping for review
2014/12/11 19:09:37
We have some code to avoid laying out some childre
mstensho (USE GERRIT)
2014/12/11 21:01:14
Then we would need to have layoutSpecialExcludedCh
Julien - ping for review
2014/12/11 23:45:44
No, we shouldn't do it as part of this change. The
|
| // Lay out the child. |
| layoutBlockChild(*child, marginInfo, previousFloatLogicalBottom); |
| @@ -1971,6 +1977,16 @@ void RenderBlockFlow::styleDidChange(StyleDifference diff, const RenderStyle* ol |
| createOrDestroyMultiColumnFlowThreadIfNeeded(oldStyle); |
| } |
| +void RenderBlockFlow::updateBlockChildDirtyBitsBeforeLayout(bool relayoutChildren, RenderBox& child) |
| +{ |
| + if (child.isRenderMultiColumnSpannerPlaceholder() && toRenderMultiColumnSpannerPlaceholder(child).rendererInFlowThread()->needsLayout()) { |
| + // The containing block of a spanner is the multicol container (|this| block), but the spanner |
| + // is laid out via its spanner set (|child|), so we need to make sure that we enter it. |
| + child.setChildNeedsLayout(MarkOnlyThis); |
| + } |
| + RenderBlock::updateBlockChildDirtyBitsBeforeLayout(relayoutChildren, child); |
| +} |
| + |
| void RenderBlockFlow::updateStaticInlinePositionForChild(RenderBox& child, LayoutUnit logicalTop) |
| { |
| if (child.style()->isOriginalDisplayInlineType()) |