summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/rendering
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2012-02-27 15:28:21 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-02-27 15:28:21 -0800
commit6753735b5cf1b2396d387b9f876a11a5fd2b3c3d (patch)
tree8d41427725d0a0c8567353446fe41385901e2f3d /Source/WebCore/rendering
parent5015ffe477809860e6a9e05779afb1855aa994f2 (diff)
parenta3d6f6aedc8ed044682d65258bb964c64fc7511b (diff)
downloadexternal_webkit-6753735b5cf1b2396d387b9f876a11a5fd2b3c3d.zip
external_webkit-6753735b5cf1b2396d387b9f876a11a5fd2b3c3d.tar.gz
external_webkit-6753735b5cf1b2396d387b9f876a11a5fd2b3c3d.tar.bz2
Merge "Fix iframe webkit positioning"
Diffstat (limited to 'Source/WebCore/rendering')
-rw-r--r--Source/WebCore/rendering/RenderLayer.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp
index 0932224..66aab18 100644
--- a/Source/WebCore/rendering/RenderLayer.cpp
+++ b/Source/WebCore/rendering/RenderLayer.cpp
@@ -1390,11 +1390,27 @@ void RenderLayer::scrollTo(int x, int y)
view->updateWidgetPositions();
}
+#if PLATFORM(ANDROID)
+ GraphicsLayerAndroid* backingLayer = 0;
+ bool scrollableContent = false;
+#endif
+
#if USE(ACCELERATED_COMPOSITING)
if (compositor()->inCompositingMode()) {
// Our stacking context is guaranteed to contain all of our descendants that may need
// repositioning, so update compositing layers from there.
+#if ENABLE(ANDROID_OVERFLOW_SCROLL)
+ if (view && backing() && backing()->graphicsLayer()) {
+ backingLayer = static_cast<GraphicsLayerAndroid*>(backing()->graphicsLayer());
+ scrollableContent = backingLayer->contentLayer()
+ && backingLayer->contentLayer()->contentIsScrollable();
+ }
+ // If we have a scrollable content, no need to do this
+ RenderLayer* compositingAncestor = enclosingCompositingLayer();
+ if (!scrollableContent && compositingAncestor) {
+#else
if (RenderLayer* compositingAncestor = stackingContext()->enclosingCompositingLayer()) {
+#endif
if (compositor()->compositingConsultsOverlap())
compositor()->updateCompositingLayers(CompositingUpdateOnScroll, compositingAncestor);
else {
@@ -1423,10 +1439,10 @@ void RenderLayer::scrollTo(int x, int y)
#if ENABLE(ANDROID_OVERFLOW_SCROLL)
// On android, scrollable areas are put on composited layers, so we
// do not need to repaint simply because we are scrolling
- if (view && !hasOverflowScroll())
+ if (view && !(hasOverflowScroll() || scrollableContent))
renderer()->repaintUsingContainer(repaintContainer, rectForRepaint);
- if (view && hasOverflowScroll() && backing() && backing()->graphicsLayer())
- static_cast<GraphicsLayerAndroid*>(backing()->graphicsLayer())->updateScrollOffset();
+ if (backingLayer && (hasOverflowScroll() || scrollableContent))
+ backingLayer->updateScrollOffset();
#else
if (view)
renderer()->repaintUsingContainer(repaintContainer, rectForRepaint);