Chromium Code Reviews| 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. |
|
chrishtr
2014/07/24 18:44:57
Starting with a basic question..
Can you give me
|
| + OwnPtr<GraphicsLayer> m_overflowControlsClippingLayer; |
| + |
| // A squashing CLM has two possible squashing-related structures. |
| // |
| // If m_ancestorClippingLayer is present: |