| Index: Source/core/rendering/compositing/CompositedLayerMapping.cpp
|
| diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.cpp b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
|
| index 1924a3268a64f8c9bdbe32b0526ef477db51102e..426170eb85de7009db385f305ed198a1f40d0d6f 100644
|
| --- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp
|
| +++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp
|
| @@ -54,6 +54,7 @@
|
| #include "platform/LengthFunctions.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| #include "platform/fonts/FontCache.h"
|
| +#include "platform/geometry/TransformState.h"
|
| #include "platform/graphics/GraphicsContext.h"
|
| #include "wtf/CurrentTime.h"
|
| #include "wtf/text/StringBuilder.h"
|
| @@ -761,11 +762,12 @@ void CompositedLayerMapping::updateOverflowControlsHostLayerGeometry(const Rende
|
|
|
| m_overflowControlsHostLayer->setPosition(IntPoint(-m_overflowControlsClippingLayer->offsetFromRenderer()));
|
| } else {
|
| - ASSERT(m_owningLayer.transformAncestor() == compositingStackingContext->transformAncestor());
|
| - LayoutPoint localOffsetToTransformedAncestor = m_owningLayer.computeOffsetFromTransformedAncestor();
|
| - LayoutPoint compositingStackingContextOffsetToTransformedAncestor = compositingStackingContext->computeOffsetFromTransformedAncestor();
|
| -
|
| - m_overflowControlsHostLayer->setPosition(FloatPoint(localOffsetToTransformedAncestor - compositingStackingContextOffsetToTransformedAncestor));
|
| + // The controls are in the same 2D space as the compositing container, so we can map them into the space of the container.
|
| + TransformState transformState(TransformState::ApplyTransformDirection, FloatPoint());
|
| + m_owningLayer.renderer()->mapLocalToContainer(compositingStackingContext->renderer(), transformState, ApplyContainerFlip);
|
| + transformState.flatten();
|
| + LayoutPoint offsetFromStackingContainer = LayoutPoint(transformState.lastPlanarPoint());
|
| + m_overflowControlsHostLayer->setPosition(FloatPoint(offsetFromStackingContainer));
|
| }
|
| } else {
|
| m_overflowControlsHostLayer->setPosition(FloatPoint());
|
|
|