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);