summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp
diff options
context:
space:
mode:
authorNicolas Roard <nicolas@android.com>2010-03-24 18:27:42 +0000
committerNicolas Roard <nicolas@android.com>2010-03-24 20:26:11 +0000
commit84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c (patch)
tree5caf86376d0ad1fd9d947f11acca0de162089f50 /WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp
parentfef9ddedbf313d5afeda1938c57b4e90cef118f7 (diff)
downloadexternal_webkit-84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c.zip
external_webkit-84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c.tar.gz
external_webkit-84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c.tar.bz2
Mark positioned elements as needing a relayout when checking for hit test.
This is necessary when using composited fixed layers, as the layers position may have moved UI-side, while the webkit's related position of those layers may not have been updated yet. Fix Bug:2457215 Change-Id: If4f0e9c3d1a4786b29dcc7c2dc3510ba090b6a36
Diffstat (limited to 'WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp')
-rw-r--r--WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp b/WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp
index fa4a180..3571a49 100644
--- a/WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp
@@ -115,6 +115,7 @@ GraphicsLayerAndroid::GraphicsLayerAndroid(GraphicsLayerClient* client) :
m_needsNotifyClient(false),
m_haveContents(false),
m_haveImage(false),
+ m_hasFixedLayers(false),
m_translateX(0),
m_translateY(0),
m_currentTranslateX(0),
@@ -253,6 +254,13 @@ void GraphicsLayerAndroid::updateFixedPosition()
offsetFromRenderer().width(),
offsetFromRenderer().height(),
w, h);
+
+ GraphicsLayerAndroid* rootGraphicsLayer = this;
+
+ while (rootGraphicsLayer->parent())
+ rootGraphicsLayer = static_cast<GraphicsLayerAndroid*>(rootGraphicsLayer->parent());
+
+ rootGraphicsLayer->setHasFixedLayers(true);
}
}