2008-09-29 David Hyatt <hyatt@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=21216
Make setScrollPosition and scroll() cross-platform.
Reviewed by Anders
* platform/ScrollView.cpp:
(WebCore::ScrollView::setScrollPosition):
(WebCore::ScrollView::scroll):
* platform/ScrollView.h:
* platform/gtk/ScrollViewGtk.cpp:
* platform/mac/ScrollViewMac.mm:
(WebCore::ScrollView::platformSetScrollPosition):
(WebCore::ScrollView::platformScroll):
* platform/qt/ScrollViewQt.cpp:
* platform/win/ScrollViewWin.cpp:
* platform/wx/ScrollViewWx.cpp:
(WebCore::ScrollView::platformSetScrollPosition):
(WebCore::ScrollView::platformScroll):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/platform/ScrollView.cpp b/WebCore/platform/ScrollView.cpp
index 7469147..6482ec3 100644
--- a/WebCore/platform/ScrollView.cpp
+++ b/WebCore/platform/ScrollView.cpp
@@ -159,6 +159,37 @@
}
}
+void ScrollView::setScrollPosition(const IntPoint& scrollPoint)
+{
+ if (platformWidget()) {
+ platformSetScrollPosition(scrollPoint);
+ return;
+ }
+
+ IntPoint newScrollPosition = scrollPoint.shrunkTo(maximumScrollPosition());
+ newScrollPosition.clampNegativeToZero();
+
+ if (newScrollPosition == scrollPosition())
+ return;
+
+ updateScrollbars(IntSize(newScrollPosition.x(), newScrollPosition.y()));
+}
+
+bool ScrollView::scroll(ScrollDirection direction, ScrollGranularity granularity)
+{
+ if (platformWidget())
+ return platformScroll(direction, granularity);
+
+ if (direction == ScrollUp || direction == ScrollDown) {
+ if (m_verticalScrollbar)
+ return m_verticalScrollbar->scroll(direction, granularity);
+ } else {
+ if (m_horizontalScrollbar)
+ return m_horizontalScrollbar->scroll(direction, granularity);
+ }
+ return false;
+}
+
IntPoint ScrollView::windowToContents(const IntPoint& windowPoint) const
{
IntPoint viewPoint = convertFromContainingWindow(windowPoint);