2010-11-17 Andreas Kling <kling@webkit.org>
authorandreas.kling@nokia.com <andreas.kling@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Nov 2010 22:57:43 +0000 (22:57 +0000)
committerandreas.kling@nokia.com <andreas.kling@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 17 Nov 2010 22:57:43 +0000 (22:57 +0000)
        Reviewed by Kenneth Rohde Christiansen.

        ScrollView: Decouple actualVisibleContentRect from visibleContentRect

        Added actualVisibleContentRect() which will return the override provided
        by setActualVisibleContentRect() or fall back to visibleContentRect()
        if no override has been set.

        This is similar to what the iPhone does.

        * platform/ScrollView.cpp:
        (WebCore::ScrollView::visibleContentRect):
        * platform/ScrollView.h:
        (WebCore::ScrollView::actualVisibleContentRect):
        (WebCore::ScrollView::setActualVisibleContentRect): IntRect -> const IntRect&

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@72248 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/ScrollView.cpp
WebCore/platform/ScrollView.h

index 287c7c3a99e2fce662606a327112126971a44334..229599e99c2b5a77bc4df1061155c698ca72b7c0 100644 (file)
@@ -1,3 +1,21 @@
+2010-11-17  Andreas Kling  <kling@webkit.org>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        ScrollView: Decouple actualVisibleContentRect from visibleContentRect
+
+        Added actualVisibleContentRect() which will return the override provided
+        by setActualVisibleContentRect() or fall back to visibleContentRect()
+        if no override has been set.
+
+        This is similar to what the iPhone does.
+
+        * platform/ScrollView.cpp:
+        (WebCore::ScrollView::visibleContentRect):
+        * platform/ScrollView.h:
+        (WebCore::ScrollView::actualVisibleContentRect):
+        (WebCore::ScrollView::setActualVisibleContentRect): IntRect -> const IntRect&
+
 2010-11-17  Tony Chang  <tony@chromium.org>
 
         Reviewed by Adam Barth.
index 5b8ff55ac74656d87f309da0f4c8dc4d08c53085..342a344288abd3295dbbbd61476997da99df2d19 100644 (file)
@@ -210,9 +210,6 @@ IntRect ScrollView::visibleContentRect(bool includeScrollbars) const
     if (paintsEntireContents())
         return IntRect(IntPoint(0, 0), contentsSize());
 
-    if (!m_actualVisibleContentRect.isEmpty())
-        return m_actualVisibleContentRect;
-
     return IntRect(IntPoint(m_scrollOffset.width(), m_scrollOffset.height()),
                    IntSize(max(0, width() - (verticalScrollbar() && !includeScrollbars ? verticalScrollbar()->width() : 0)), 
                            max(0, height() - (horizontalScrollbar() && !includeScrollbars ? horizontalScrollbar()->height() : 0))));
index 506dbf347398a1a5559788797e1e9e475943ad60..8186b77bb6a5f1d3071b6c61894022290c0bf27b 100644 (file)
@@ -126,10 +126,12 @@ public:
 
     // The visible content rect has a location that is the scrolled offset of the document. The width and height are the viewport width
     // and height. By default the scrollbars themselves are excluded from this rectangle, but an optional boolean argument allows them to be
-    // included. In the situation the client is responsible for the scrolling (ie. with a tiled backing store) it is possible to
-    // override the current visibleContentRect by using setActualVisibleContentRect, for instance when a pan ends.
+    // included.
+    // In the situation the client is responsible for the scrolling (ie. with a tiled backing store) it is possible to use
+    // the actualVisibleContentRect instead, though this must be updated manually, e.g after panning ends.
     IntRect visibleContentRect(bool includeScrollbars = false) const;
-    void setActualVisibleContentRect(IntRect actualVisibleContentRect) { m_actualVisibleContentRect = actualVisibleContentRect; }
+    IntRect actualVisibleContentRect() const { return m_actualVisibleContentRect.isEmpty() ? visibleContentRect() : m_actualVisibleContentRect; }
+    void setActualVisibleContentRect(const IntRect& actualVisibleContentRect) { m_actualVisibleContentRect = actualVisibleContentRect; }
     int visibleWidth() const { return visibleContentRect().width(); }
     int visibleHeight() const { return visibleContentRect().height(); }