| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 350a96c44547cbcc058aa4e77a3511d97f2b72cb..7e1cd71facf5ec6a78405feea570ed77542d90e5 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -1381,7 +1381,17 @@ static inline const RenderLayer* accumulateOffsetTowardsAncestor(const RenderLay
|
|
|
| location += (fixedContainerCoords - ancestorCoords);
|
| } else {
|
| + // RenderView has been handled in the first top-level 'if' block above.
|
| + ASSERT(ancestorLayer != renderer->view()->layer());
|
| + ASSERT(ancestorLayer->hasTransformRelatedProperty());
|
| +
|
| location += layer->location();
|
| +
|
| + // The spec (http://dev.w3.org/csswg/css-transforms/#transform-rendering) doesn't say if a
|
| + // fixed-position element under a scrollable transformed element should scroll. However,
|
| + // other parts of blink scroll the fixed-position element, and the following keeps the consistency.
|
| + if (RenderLayerScrollableArea* scrollableArea = ancestorLayer->scrollableArea())
|
| + location -= LayoutSize(scrollableArea->scrollOffset());
|
| }
|
| return ancestorLayer;
|
| }
|
|
|