| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 436aeb4d4c4c4d43d0b7043d532370e1a797c3d3..ce6404e7ad7d47b96ef5869715bbe72bccc0c715 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -1527,18 +1527,23 @@ bool RenderLayer::hasOverflowControls() const
|
| return m_scrollableArea && (m_scrollableArea->hasScrollbar() || m_scrollableArea->scrollCorner() || renderer()->style()->resize() != RESIZE_NONE);
|
| }
|
|
|
| +void RenderLayer::appendSingleFragmentIgnoringPagination(LayerFragments& fragments, const RenderLayer* rootLayer, const LayoutRect& dirtyRect, ClipRectsCacheSlot clipRectsCacheSlot, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRelevancy, ShouldRespectOverflowClip respectOverflowClip, const LayoutPoint* offsetFromRoot, const LayoutSize& subPixelAccumulation)
|
| +{
|
| + LayerFragment fragment;
|
| + ClipRectsContext clipRectsContext(rootLayer, clipRectsCacheSlot, inOverlayScrollbarSizeRelevancy, subPixelAccumulation);
|
| + if (respectOverflowClip == IgnoreOverflowClip)
|
| + clipRectsContext.setIgnoreOverflowClip();
|
| + clipper().calculateRects(clipRectsContext, dirtyRect, fragment.layerBounds, fragment.backgroundRect, fragment.foregroundRect, fragment.outlineRect, offsetFromRoot);
|
| + fragments.append(fragment);
|
| +}
|
| +
|
| void RenderLayer::collectFragments(LayerFragments& fragments, const RenderLayer* rootLayer, const LayoutRect& dirtyRect,
|
| ClipRectsCacheSlot clipRectsCacheSlot, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRelevancy, ShouldRespectOverflowClip respectOverflowClip, const LayoutPoint* offsetFromRoot,
|
| const LayoutSize& subPixelAccumulation, const LayoutRect* layerBoundingBox)
|
| {
|
| - if (!enclosingPaginationLayer() || hasTransformRelatedProperty()) {
|
| + if (!enclosingPaginationLayer()) {
|
| // For unpaginated layers, there is only one fragment.
|
| - LayerFragment fragment;
|
| - ClipRectsContext clipRectsContext(rootLayer, clipRectsCacheSlot, inOverlayScrollbarSizeRelevancy, subPixelAccumulation);
|
| - if (respectOverflowClip == IgnoreOverflowClip)
|
| - clipRectsContext.setIgnoreOverflowClip();
|
| - clipper().calculateRects(clipRectsContext, dirtyRect, fragment.layerBounds, fragment.backgroundRect, fragment.foregroundRect, fragment.outlineRect, offsetFromRoot);
|
| - fragments.append(fragment);
|
| + appendSingleFragmentIgnoringPagination(fragments, rootLayer, dirtyRect, clipRectsCacheSlot, inOverlayScrollbarSizeRelevancy, respectOverflowClip, offsetFromRoot, subPixelAccumulation);
|
| return;
|
| }
|
|
|
| @@ -1855,7 +1860,10 @@ RenderLayer* RenderLayer::hitTestLayer(RenderLayer* rootLayer, RenderLayer* cont
|
|
|
| // Collect the fragments. This will compute the clip rectangles for each layer fragment.
|
| LayerFragments layerFragments;
|
| - collectFragments(layerFragments, rootLayer, hitTestRect, RootRelativeClipRects, IncludeOverlayScrollbarSize);
|
| + if (appliedTransform)
|
| + appendSingleFragmentIgnoringPagination(layerFragments, rootLayer, hitTestRect, RootRelativeClipRects, IncludeOverlayScrollbarSize);
|
| + else
|
| + collectFragments(layerFragments, rootLayer, hitTestRect, RootRelativeClipRects, IncludeOverlayScrollbarSize);
|
|
|
| if (m_scrollableArea && m_scrollableArea->hitTestResizerInFragments(layerFragments, hitTestLocation)) {
|
| renderer()->updateHitTestResult(result, hitTestLocation.point());
|
|
|