| Index: Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| diff --git a/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| index eee694b7b97de236f75554d66c0e4133aeb10933..b0555a5b2af6c9766a4a282382d2e39e16ee7c6e 100644
|
| --- a/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| +++ b/Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp
|
| @@ -48,17 +48,22 @@ void RenderMultiColumnSpannerPlaceholder::layout()
|
| {
|
| ASSERT(needsLayout());
|
|
|
| - // FIXME: actual spanner positioning isn't implemented yet. Just set it to 0,0 for consistency
|
| - // (in case the spanner used to be something else that was laid out properly).
|
| - m_rendererInFlowThread->setLogicalTop(LayoutUnit());
|
| - m_rendererInFlowThread->setLogicalLeft(LayoutUnit());
|
| -
|
| // Lay out the actual column-span:all element.
|
| m_rendererInFlowThread->layoutIfNeeded();
|
|
|
| + // The spanner has now been laid out, so its height is known. Time to update the placeholder's
|
| + // height as well, so that we take up the correct amount of space in the multicol container.
|
| + updateLogicalHeight();
|
| +
|
| clearNeedsLayout();
|
| }
|
|
|
| +void RenderMultiColumnSpannerPlaceholder::computeLogicalHeight(LayoutUnit, LayoutUnit logicalTop, LogicalExtentComputedValues& computedValues) const
|
| +{
|
| + computedValues.m_extent = m_rendererInFlowThread->logicalHeight();
|
| + computedValues.m_position = logicalTop;
|
| +}
|
| +
|
| void RenderMultiColumnSpannerPlaceholder::invalidateTreeIfNeeded(const PaintInvalidationState& paintInvalidationState)
|
| {
|
| PaintInvalidationState newPaintInvalidationState(paintInvalidationState, *this, paintInvalidationState.paintInvalidationContainer());
|
| @@ -66,6 +71,17 @@ void RenderMultiColumnSpannerPlaceholder::invalidateTreeIfNeeded(const PaintInva
|
| RenderBox::invalidateTreeIfNeeded(paintInvalidationState);
|
| }
|
|
|
| +void RenderMultiColumnSpannerPlaceholder::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
|
| +{
|
| + if (!m_rendererInFlowThread->hasSelfPaintingLayer())
|
| + m_rendererInFlowThread->paint(paintInfo, paintOffset);
|
| +}
|
| +
|
| +bool RenderMultiColumnSpannerPlaceholder::nodeAtPoint(const HitTestRequest& request, HitTestResult& result, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction action)
|
| +{
|
| + return !m_rendererInFlowThread->hasSelfPaintingLayer() && m_rendererInFlowThread->nodeAtPoint(request, result, locationInContainer, accumulatedOffset, action);
|
| +}
|
| +
|
| const char* RenderMultiColumnSpannerPlaceholder::renderName() const
|
| {
|
| return "RenderMultiColumnSpannerPlaceholder";
|
|
|