Index: Source/core/platform/mac/ScrollAnimatorMac.mm |
diff --git a/Source/core/platform/mac/ScrollAnimatorMac.mm b/Source/core/platform/mac/ScrollAnimatorMac.mm |
index 3a3cecc83745591291c961f8eba2e5a3777cb8c8..00135e67b06567e830dde3f91a11cb459832cffe 100644 |
--- a/Source/core/platform/mac/ScrollAnimatorMac.mm |
+++ b/Source/core/platform/mac/ScrollAnimatorMac.mm |
@@ -666,7 +666,7 @@ bool ScrollAnimatorMac::scroll(ScrollbarOrientation orientation, ScrollGranulari |
return ScrollAnimator::scroll(orientation, granularity, step, multiplier); |
float currentPos = orientation == HorizontalScrollbar ? m_currentPosX : m_currentPosY; |
- float newPos = std::max<float>(std::min<float>(currentPos + (step * multiplier), static_cast<float>(m_scrollableArea->scrollSize(orientation))), 0); |
+ float newPos = std::max<float>(std::min<float>(currentPos + (step * multiplier), m_scrollableArea->maximumScrollPosition(orientation)), m_scrollableArea->minimumScrollPosition(orientation)); |
if (currentPos == newPos) |
return false; |
@@ -692,8 +692,11 @@ FloatPoint ScrollAnimatorMac::adjustScrollPositionIfNecessary(const FloatPoint& |
if (!m_scrollableArea->constrainsScrollingToContentEdge()) |
return position; |
- float newX = max<float>(min<float>(position.x(), m_scrollableArea->contentsSize().width() - m_scrollableArea->visibleWidth()), 0); |
- float newY = max<float>(min<float>(position.y(), m_scrollableArea->contentsSize().height() - m_scrollableArea->visibleHeight()), 0); |
+ IntPoint minPos = m_scrollableArea->minimumScrollPosition(); |
+ IntPoint maxPos = m_scrollableArea->maximumScrollPosition(); |
+ |
+ float newX = max<float>(min<float>(position.x(), maxPos.x()), minPos.x()); |
+ float newY = max<float>(min<float>(position.y(), maxPos.y()), minPos.y()); |
return FloatPoint(newX, newY); |
} |