| Index: Source/core/rendering/RenderLayerClipper.cpp
|
| diff --git a/Source/core/rendering/RenderLayerClipper.cpp b/Source/core/rendering/RenderLayerClipper.cpp
|
| index e228b4b7cc40f0a24f9be6ce6696323c3f004084..1c84b9578b7b9cf0cb844508f8edc41444cedd6e 100644
|
| --- a/Source/core/rendering/RenderLayerClipper.cpp
|
| +++ b/Source/core/rendering/RenderLayerClipper.cpp
|
| @@ -124,7 +124,7 @@ LayoutRect RenderLayerClipper::childrenClipRect() const
|
| RenderLayer* clippingRootLayer = clippingRootForPainting();
|
| LayoutRect layerBounds;
|
| ClipRect backgroundRect, foregroundRect, outlineRect;
|
| - ClipRectsContext clipRectsContext(clippingRootLayer, 0, TemporaryClipRects);
|
| + ClipRectsContext clipRectsContext(clippingRootLayer, TemporaryClipRects);
|
| // Need to use temporary clip rects, because the value of 'dontClipToOverflow' may be different from the painting path (<rdar://problem/11844909>).
|
| calculateRects(clipRectsContext, renderView->unscaledDocumentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
|
| return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(foregroundRect.rect())).enclosingBoundingBox();
|
| @@ -133,12 +133,11 @@ LayoutRect RenderLayerClipper::childrenClipRect() const
|
| LayoutRect RenderLayerClipper::selfClipRect() const
|
| {
|
| // FIXME: border-radius not accounted for.
|
| - // FIXME: Regions not accounted for.
|
| RenderView* renderView = m_renderer->view();
|
| RenderLayer* clippingRootLayer = clippingRootForPainting();
|
| LayoutRect layerBounds;
|
| ClipRect backgroundRect, foregroundRect, outlineRect;
|
| - ClipRectsContext clipRectsContext(clippingRootLayer, 0, PaintingClipRects);
|
| + ClipRectsContext clipRectsContext(clippingRootLayer, PaintingClipRects);
|
| calculateRects(clipRectsContext, renderView->documentRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
|
| return clippingRootLayer->renderer()->localToAbsoluteQuad(FloatQuad(backgroundRect.rect())).enclosingBoundingBox();
|
| }
|
| @@ -146,11 +145,10 @@ LayoutRect RenderLayerClipper::selfClipRect() const
|
| LayoutRect RenderLayerClipper::localClipRect() const
|
| {
|
| // FIXME: border-radius not accounted for.
|
| - // FIXME: Regions not accounted for.
|
| RenderLayer* clippingRootLayer = clippingRootForPainting();
|
| LayoutRect layerBounds;
|
| ClipRect backgroundRect, foregroundRect, outlineRect;
|
| - ClipRectsContext clipRectsContext(clippingRootLayer, 0, PaintingClipRects);
|
| + ClipRectsContext clipRectsContext(clippingRootLayer, PaintingClipRects);
|
| calculateRects(clipRectsContext, PaintInfo::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
|
|
|
| LayoutRect clipRect = backgroundRect.rect();
|
| @@ -188,7 +186,7 @@ void RenderLayerClipper::calculateRects(const ClipRectsContext& clipRectsContext
|
| if (m_renderer->hasOverflowClip()) {
|
| // This layer establishes a clip of some kind.
|
| if (m_renderer->layer() != clipRectsContext.rootLayer || clipRectsContext.respectOverflowClip == RespectOverflowClip) {
|
| - foregroundRect.intersect(toRenderBox(m_renderer)->overflowClipRect(offset, clipRectsContext.region, clipRectsContext.overlayScrollbarSizeRelevancy));
|
| + foregroundRect.intersect(toRenderBox(m_renderer)->overflowClipRect(offset, clipRectsContext.overlayScrollbarSizeRelevancy));
|
| if (m_renderer->style()->hasBorderRadius())
|
| foregroundRect.setHasRadius(true);
|
| }
|
| @@ -207,8 +205,7 @@ void RenderLayerClipper::calculateRects(const ClipRectsContext& clipRectsContext
|
| if (m_renderer->layer() != clipRectsContext.rootLayer || clipRectsContext.respectOverflowClip == RespectOverflowClip)
|
| backgroundRect.intersect(layerBoundsWithVisualOverflow);
|
| } else {
|
| - // Shift the bounds to be for our region only.
|
| - LayoutRect bounds = toRenderBox(m_renderer)->borderBoxRectInRegion(clipRectsContext.region);
|
| + LayoutRect bounds = toRenderBox(m_renderer)->borderBoxRect();
|
| bounds.moveBy(offset);
|
| if (m_renderer->layer() != clipRectsContext.rootLayer || clipRectsContext.respectOverflowClip == RespectOverflowClip)
|
| backgroundRect.intersect(bounds);
|
| @@ -218,7 +215,7 @@ void RenderLayerClipper::calculateRects(const ClipRectsContext& clipRectsContext
|
| // CSS clip (different than clipping due to overflow) can clip to any box, even if it falls outside of the border box.
|
| if (m_renderer->hasClip()) {
|
| // Clip applies to *us* as well, so go ahead and update the damageRect.
|
| - LayoutRect newPosClip = toRenderBox(m_renderer)->clipRect(offset, clipRectsContext.region);
|
| + LayoutRect newPosClip = toRenderBox(m_renderer)->clipRect(offset);
|
| backgroundRect.intersect(newPosClip);
|
| foregroundRect.intersect(newPosClip);
|
| outlineRect.intersect(newPosClip);
|
| @@ -281,7 +278,7 @@ void RenderLayerClipper::calculateClipRects(const ClipRectsContext& clipRectsCon
|
| }
|
|
|
| if (m_renderer->hasOverflowClip()) {
|
| - ClipRect newOverflowClip = toRenderBox(m_renderer)->overflowClipRect(offset, clipRectsContext.region, clipRectsContext.overlayScrollbarSizeRelevancy);
|
| + ClipRect newOverflowClip = toRenderBox(m_renderer)->overflowClipRect(offset, clipRectsContext.overlayScrollbarSizeRelevancy);
|
| if (m_renderer->style()->hasBorderRadius())
|
| newOverflowClip.setHasRadius(true);
|
| clipRects.setOverflowClipRect(intersection(newOverflowClip, clipRects.overflowClipRect()));
|
| @@ -289,7 +286,7 @@ void RenderLayerClipper::calculateClipRects(const ClipRectsContext& clipRectsCon
|
| clipRects.setPosClipRect(intersection(newOverflowClip, clipRects.posClipRect()));
|
| }
|
| if (m_renderer->hasClip()) {
|
| - LayoutRect newPosClip = toRenderBox(m_renderer)->clipRect(offset, clipRectsContext.region);
|
| + LayoutRect newPosClip = toRenderBox(m_renderer)->clipRect(offset);
|
| clipRects.setPosClipRect(intersection(newPosClip, clipRects.posClipRect()));
|
| clipRects.setOverflowClipRect(intersection(newPosClip, clipRects.overflowClipRect()));
|
| clipRects.setFixedClipRect(intersection(newPosClip, clipRects.fixedClipRect()));
|
|
|