| Index: Source/core/platform/Scrollbar.cpp
|
| diff --git a/Source/core/platform/Scrollbar.cpp b/Source/core/platform/Scrollbar.cpp
|
| index 1811023455171fb5b196ef4d5d7a59d51cbf57a2..9c4c104157c1d10134717db2916fdbba43c27c00 100644
|
| --- a/Source/core/platform/Scrollbar.cpp
|
| +++ b/Source/core/platform/Scrollbar.cpp
|
| @@ -295,11 +295,8 @@ void Scrollbar::moveThumb(int pos, bool draggingDocument)
|
| delta = pos - m_documentDragPos;
|
| m_draggingDocument = true;
|
| FloatPoint currentPosition = m_scrollableArea->scrollAnimator()->currentPosition();
|
| - int destinationPosition = (m_orientation == HorizontalScrollbar ? currentPosition.x() : currentPosition.y()) + delta;
|
| - if (delta > 0)
|
| - destinationPosition = min(destinationPosition + delta, maximum());
|
| - else if (delta < 0)
|
| - destinationPosition = max(destinationPosition + delta, 0);
|
| + float destinationPosition = (m_orientation == HorizontalScrollbar ? currentPosition.x() : currentPosition.y()) + delta;
|
| + destinationPosition = m_scrollableArea->clampScrollPosition(m_orientation, destinationPosition);
|
| m_scrollableArea->scrollToOffsetWithoutAnimation(m_orientation, destinationPosition);
|
| m_documentDragPos = pos;
|
| return;
|
| @@ -314,14 +311,15 @@ void Scrollbar::moveThumb(int pos, bool draggingDocument)
|
| int thumbPos = theme()->thumbPosition(this);
|
| int thumbLen = theme()->thumbLength(this);
|
| int trackLen = theme()->trackLength(this);
|
| - int maxPos = trackLen - thumbLen;
|
| if (delta > 0)
|
| - delta = min(maxPos - thumbPos, delta);
|
| + delta = min(trackLen - thumbLen - thumbPos, delta);
|
| else if (delta < 0)
|
| delta = max(-thumbPos, delta);
|
|
|
| + float minPos = m_scrollableArea->minimumScrollPosition(m_orientation);
|
| + float maxPos = m_scrollableArea->maximumScrollPosition(m_orientation);
|
| if (delta) {
|
| - float newPosition = static_cast<float>(thumbPos + delta) * maximum() / (trackLen - thumbLen);
|
| + float newPosition = static_cast<float>(thumbPos + delta) * (maxPos - minPos) / (trackLen - thumbLen) + minPos;
|
| m_scrollableArea->scrollToOffsetWithoutAnimation(m_orientation, newPosition);
|
| }
|
| }
|
|
|