diff options
author | Nicolas Roard <nicolasroard@google.com> | 2012-03-01 17:58:10 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-03-01 17:58:10 -0800 |
commit | f9aa763e9ad41bee64fbd834d1acf4a158e93a3e (patch) | |
tree | 8a916a7c54b10b76e79cd02b80f4a434b42747f9 /Source/WebCore/platform/ScrollView.cpp | |
parent | 1e0965438976cdf0f18c3594c0bc353c2cecfc6c (diff) | |
parent | 9a8423b643a8ce99e5642f2548600f9125382e89 (diff) | |
download | external_webkit-f9aa763e9ad41bee64fbd834d1acf4a158e93a3e.zip external_webkit-f9aa763e9ad41bee64fbd834d1acf4a158e93a3e.tar.gz external_webkit-f9aa763e9ad41bee64fbd834d1acf4a158e93a3e.tar.bz2 |
Merge "Fix iframe, for reals!"
Diffstat (limited to 'Source/WebCore/platform/ScrollView.cpp')
-rw-r--r-- | Source/WebCore/platform/ScrollView.cpp | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/Source/WebCore/platform/ScrollView.cpp b/Source/WebCore/platform/ScrollView.cpp index 58a1fbf..140c8e5 100644 --- a/Source/WebCore/platform/ScrollView.cpp +++ b/Source/WebCore/platform/ScrollView.cpp @@ -29,6 +29,10 @@ #include "AXObjectCache.h" #if PLATFORM(ANDROID) #include "FrameView.h" +#include "GraphicsLayerAndroid.h" +#include "RenderLayer.h" +#include "RenderLayerBacking.h" +#include "RenderView.h" #endif #include "GraphicsContext.h" #include "GraphicsLayer.h" @@ -304,34 +308,6 @@ void ScrollView::setContentsSize(const IntSize& newSize) } #if PLATFORM(ANDROID) -int ScrollView::actualWidth() const -{ - if (platformWidget()) - return platformActualWidth(); - return width(); -} - -int ScrollView::actualHeight() const -{ - if (platformWidget()) - return platformActualHeight(); - return height(); -} - -int ScrollView::actualScrollX() const -{ - if (platformWidget()) - return platformActualScrollX(); - return scrollX(); -} - -int ScrollView::actualScrollY() const -{ - if (platformWidget()) - return platformActualScrollY(); - return scrollY(); -} - FrameView* ScrollView::frameView() { if (this->isFrameView()) { FrameView* frameView = reinterpret_cast<FrameView*>(this); @@ -397,6 +373,26 @@ void ScrollView::scrollTo(const IntSize& newOffset) return; m_scrollOffset = newOffset; +#if PLATFORM(ANDROID) + if (parent()) { + FrameView* frameView = this->frameView(); + // IFrames are composited on a layer, we do not need to repaint them + // when scrolling + if (frameView) { + RenderView* renderer = frameView->frame()->contentRenderer(); + if (renderer) { + RenderLayer* layer = renderer->layer(); + if (layer->backing()) { + GraphicsLayerAndroid* backing = static_cast<GraphicsLayerAndroid*>( + layer->backing()->graphicsLayer()); + backing->updateScrollOffset(); + } + } + return; + } + } +#endif + if (scrollbarsSuppressed()) return; |