| Index: Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| diff --git a/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..94e69ad1f1ce3109eff91a63c3cccac0b7ea8ac0
|
| --- /dev/null
|
| +++ b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| @@ -0,0 +1,55 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "config.h"
|
| +
|
| +#include "core/rendering/RenderMultiColumnSpannerPlaceholder.h"
|
| +
|
| +#include "core/rendering/RenderMultiColumnFlowThread.h"
|
| +
|
| +namespace blink {
|
| +
|
| +RenderMultiColumnSpannerPlaceholder* RenderMultiColumnSpannerPlaceholder::createAnonymous(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner, RenderStyle* parentStyle)
|
| +{
|
| + RenderMultiColumnSpannerPlaceholder* renderer = new RenderMultiColumnSpannerPlaceholder(flowThread, spanner);
|
| + renderer->setDocumentForAnonymous(&flowThread->document());
|
| + RefPtr<RenderStyle> newStyle(RenderStyle::createAnonymousStyleWithDisplay(parentStyle, BLOCK));
|
| +
|
| + // We don't want floats in the row preceding the spanner to continue on the other side.
|
| + newStyle->setClear(CBOTH);
|
| +
|
| + // A spanner must be padded with a pagination strut, so that contents that come after the
|
| + // spanner don't bleed into the column preceding the spanner.
|
| + newStyle->setColumnBreakBefore(PBALWAYS);
|
| +
|
| + renderer->setStyle(newStyle.release());
|
| + return renderer;
|
| +}
|
| +
|
| +RenderMultiColumnSpannerPlaceholder::RenderMultiColumnSpannerPlaceholder(RenderMultiColumnFlowThread* flowThread, RenderBox* spanner)
|
| + : RenderBox(0)
|
| + , m_flowThread(flowThread)
|
| + , m_spanner(spanner)
|
| +{
|
| +}
|
| +
|
| +void RenderMultiColumnSpannerPlaceholder::markForPaginationRelayoutIfNeeded(SubtreeLayoutScope& layoutScope)
|
| +{
|
| + // Cannot skip spanner placeholder layout. We need to enter in order to advance to the column
|
| + // set following the spanner.
|
| + layoutScope.setChildNeedsLayout(this);
|
| +}
|
| +
|
| +void RenderMultiColumnSpannerPlaceholder::layout()
|
| +{
|
| + RenderBox::layout();
|
| + m_flowThread->advanceToNextColumnSet(this);
|
| +}
|
| +
|
| +const char* RenderMultiColumnSpannerPlaceholder::renderName() const
|
| +{
|
| + return "RenderMultiColumnSpannerPlaceholder";
|
| +}
|
| +
|
| +} // namespace blink
|
|
|