| Index: Source/core/rendering/compositing/CompositedLayerMapping.h
|
| diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.h b/Source/core/rendering/compositing/CompositedLayerMapping.h
|
| index df715b25af8a6052eef1f6abbab6fac39adefb2e..c4a2458d97df3d536107c60f070808e222b4d240 100644
|
| --- a/Source/core/rendering/compositing/CompositedLayerMapping.h
|
| +++ b/Source/core/rendering/compositing/CompositedLayerMapping.h
|
| @@ -90,7 +90,7 @@ public:
|
| RenderLayer& owningLayer() const { return m_owningLayer; }
|
|
|
| bool updateGraphicsLayerConfiguration();
|
| - void updateGraphicsLayerGeometry(const RenderLayer* compositingContainer, Vector<RenderLayer*>& layersNeedingPaintInvalidation);
|
| + void updateGraphicsLayerGeometry(const RenderLayer* compositingContainer, const RenderLayer* compositingStackingContext, Vector<RenderLayer*>& layersNeedingPaintInvalidation);
|
|
|
| // Update whether layer needs blending.
|
| void updateContentsOpaque();
|
| @@ -226,6 +226,7 @@ private:
|
| void updateSquashingLayerGeometry(const LayoutPoint& offsetFromCompositedAncestor, const IntPoint& graphicsLayerParentLocation, const RenderLayer& referenceLayer, Vector<GraphicsLayerPaintInfo>& layers, GraphicsLayer*, LayoutPoint* offsetFromTransformedAncestor, Vector<RenderLayer*>& layersNeedingPaintInvalidation);
|
| void updateMainGraphicsLayerGeometry(const IntRect& relativeCompositingBounds, const IntRect& localCompositingBounds, IntPoint& graphicsLayerParentLocation);
|
| void updateAncestorClippingLayerGeometry(const RenderLayer* compositingContainer, const IntPoint& snappedOffsetFromCompositedAncestor, IntPoint& graphicsLayerParentLocation);
|
| + void updateOverflowControlsHostLayerGeometry(const RenderLayer* compositingStackingContext);
|
| void updateChildContainmentLayerGeometry(const IntRect& clippingBox, const IntRect& localCompositingBounds);
|
| void updateChildTransformLayerGeometry();
|
| void updateMaskLayerGeometry();
|
| @@ -249,7 +250,7 @@ private:
|
| void updatePaintingPhases();
|
| bool updateClippingLayers(bool needsAncestorClip, bool needsDescendantClip);
|
| bool updateChildTransformLayer(bool needsChildTransformLayer);
|
| - bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool needsVerticalScrollbarLayer, bool needsScrollCornerLayer);
|
| + bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool needsVerticalScrollbarLayer, bool needsScrollCornerLayer, bool needsAncestorClip);
|
| bool updateForegroundLayer(bool needsForegroundLayer);
|
| bool updateBackgroundLayer(bool needsBackgroundLayer);
|
| bool updateMaskLayer(bool needsMaskLayer);
|
| @@ -385,8 +386,19 @@ private:
|
| OwnPtr<GraphicsLayer> m_layerForHorizontalScrollbar;
|
| OwnPtr<GraphicsLayer> m_layerForVerticalScrollbar;
|
| OwnPtr<GraphicsLayer> m_layerForScrollCorner;
|
| +
|
| + // This layer exists to simplify the reparenting of overflow control that is occasionally required
|
| + // to ensure that scrollbars appear above scrolling content.
|
| OwnPtr<GraphicsLayer> m_overflowControlsHostLayer;
|
|
|
| + // The reparented overflow controls sometimes need to be clipped by a non-ancestor. In just the same
|
| + // way we need an ancestor clipping layer to clip this CLM's internal hierarchy, we add another layer
|
| + // to clip the overflow controls. It would be possible to make m_overflowControlsHostLayer be
|
| + // responsible for applying this clip, but that could require repositioning all of the overflow
|
| + // controls since the this clip may apply an offset. By using a separate layer, the overflow controls
|
| + // can remain ignorant of the layers above them and still work correctly.
|
| + OwnPtr<GraphicsLayer> m_overflowControlsClippingLayer;
|
| +
|
| // A squashing CLM has two possible squashing-related structures.
|
| //
|
| // If m_ancestorClippingLayer is present:
|
|
|