Index: Source/core/rendering/RenderLayer.cpp |
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
index 610e046567f75fcb790c16dee674c4a9542e91ee..7fc3811f35e492369399172d704e5fef4f139eb6 100644 |
--- a/Source/core/rendering/RenderLayer.cpp |
+++ b/Source/core/rendering/RenderLayer.cpp |
@@ -818,7 +818,7 @@ bool RenderLayer::updateLayerPosition() |
localPoint.moveBy(box->topLeftLocation()); |
} |
- if (!renderer()->isOutOfFlowPositioned() && renderer()->parent()) { |
+ if (!renderer()->isOutOfFlowPositioned() && !renderer()->isColumnSpanAll() && renderer()->parent()) { |
// We must adjust our position by walking up the render tree looking for the |
// nearest enclosing object with a layer. |
RenderObject* curr = renderer()->parent(); |
@@ -1427,8 +1427,14 @@ static inline const RenderLayer* accumulateOffsetTowardsAncestor(const RenderLay |
location += (thisCoords - ancestorCoords); |
return ancestorLayer; |
} |
- } else |
+ } else if (renderer->isColumnSpanAll()) { |
+ RenderBlock* multicolContainer = renderer->containingBlock(); |
+ ASSERT(toRenderBlockFlow(multicolContainer)->multiColumnFlowThread()); |
+ parentLayer = multicolContainer->layer(); |
+ ASSERT(parentLayer); |
+ } else { |
parentLayer = layer->parent(); |
+ } |
if (!parentLayer) |
return 0; |