summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebCore/platform/android/ScrollViewAndroid.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/WebCore/platform/android/ScrollViewAndroid.cpp b/WebCore/platform/android/ScrollViewAndroid.cpp
index ccfe10e..74f9d6b 100644
--- a/WebCore/platform/android/ScrollViewAndroid.cpp
+++ b/WebCore/platform/android/ScrollViewAndroid.cpp
@@ -54,11 +54,21 @@ namespace WebCore {
IntRect ScrollView::platformVisibleContentRect(bool includeScrollbars) const
{
- IntRect rect = platformWidget()->getVisibleBounds();
- // This makes subframes draw correctly, since subframes cannot scroll.
- if (parent())
- return IntRect(0, 0, rect.width(), rect.height());
- return rect;
+ if (parent()) {
+ const ScrollView* sv = this;
+ int offsetX = 0;
+ int offsetY = 0;
+ while (sv->parent()) {
+ offsetX += sv->x();
+ offsetY += sv->y();
+ sv = sv->parent();
+ }
+ IntRect rect = sv->platformWidget()->getVisibleBounds();
+ rect.move(-offsetX, -offsetY);
+ rect.intersect(IntRect(0, 0, width(), height()));
+ return rect;
+ }
+ return platformWidget()->getVisibleBounds();
}
IntSize ScrollView::platformContentsSize() const