| Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| index cb2b7ed3227dc3d06d6377d2d01149bba06a465f..5f119512f951aa99d505c9b05fc8472d86a58973 100644
|
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
|
| @@ -308,11 +308,19 @@ void CompositedLayerMapping::updateStickyConstraints(
|
| &m_owningLayer);
|
|
|
| // Find the layout offset of the unshifted sticky box within its enclosing
|
| - // layer.
|
| + // layer. If the enclosing layer is not the scroller, the offset must be
|
| + // adjusted to include the scroll offset to keep it relative.
|
| + PaintLayer* enclosingLayer =
|
| + m_owningLayer.enclosingLayerWithCompositedLayerMapping(ExcludeSelf);
|
| LayoutPoint enclosingLayerOffset;
|
| - m_owningLayer.enclosingLayerWithCompositedLayerMapping(ExcludeSelf)
|
| - ->convertToLayerCoords(m_owningLayer.ancestorOverflowLayer(),
|
| - enclosingLayerOffset);
|
| + enclosingLayer->convertToLayerCoords(m_owningLayer.ancestorOverflowLayer(),
|
| + enclosingLayerOffset);
|
| + if (enclosingLayer != m_owningLayer.ancestorOverflowLayer()) {
|
| + enclosingLayerOffset += LayoutSize(enclosingLayer->ancestorOverflowLayer()
|
| + ->getScrollableArea()
|
| + ->getScrollOffset());
|
| + }
|
| +
|
| FloatPoint stickyBoxOffset =
|
| constraints.scrollContainerRelativeStickyBoxRect().location();
|
| DCHECK(!m_contentOffsetInCompositingLayerDirty);
|
|
|