Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
index 1c356515a000fbe6f1ef14f2e71e5212e912f078..005e7121f129c27e30771e78c474ee5ae79bdaf7 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
@@ -1416,13 +1416,13 @@ LayoutRect PaintLayerScrollableArea::scrollIntoView(const LayoutRect& rect, cons |
DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble() + roundedIntSize(r.location())); |
if (clampedScrollPosition == scrollPositionDouble()) |
- return rect; |
+ return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersection(layerBounds, localExposeRect))), UseTransforms).boundingBox()); |
bokan
2016/08/24 18:02:18
Taking the intersection now means we might end up
|
DoubleSize oldScrollOffset = adjustedScrollOffset(); |
scrollToPosition(clampedScrollPosition, ScrollOffsetUnclamped, ScrollBehaviorInstant, scrollType); |
DoubleSize scrollOffsetDifference = adjustedScrollOffset() - oldScrollOffset; |
localExposeRect.move(-LayoutSize(scrollOffsetDifference)); |
- return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(localExposeRect)), UseTransforms).boundingBox()); |
+ return LayoutRect(box().localToAbsoluteQuad(FloatQuad(FloatRect(intersection(layerBounds, localExposeRect))), UseTransforms).boundingBox()); |
} |
void PaintLayerScrollableArea::updateScrollableAreaSet(bool hasOverflow) |