diff options
author | Nicolas Roard <nicolas@android.com> | 2010-03-24 18:27:42 +0000 |
---|---|---|
committer | Nicolas Roard <nicolas@android.com> | 2010-03-24 20:26:11 +0000 |
commit | 84b2cee4185865d37e64bb3cc7a9e1bd6051eb7c (patch) | |
tree | 5caf86376d0ad1fd9d947f11acca0de162089f50 /WebCore/platform | |
parent | fef9ddedbf313d5afeda1938c57b4e90cef118f7 (diff) | |
download | external_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')
-rw-r--r-- | WebCore/platform/graphics/android/GraphicsLayerAndroid.cpp | 8 | ||||
-rw-r--r-- | WebCore/platform/graphics/android/GraphicsLayerAndroid.h | 5 |
2 files changed, 13 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); } } diff --git a/WebCore/platform/graphics/android/GraphicsLayerAndroid.h b/WebCore/platform/graphics/android/GraphicsLayerAndroid.h index 25f70b4..d0347a7 100644 --- a/WebCore/platform/graphics/android/GraphicsLayerAndroid.h +++ b/WebCore/platform/graphics/android/GraphicsLayerAndroid.h @@ -121,6 +121,9 @@ public: void sendImmediateRepaint(); LayerAndroid* contentLayer() { return m_contentLayer; } + bool hasFixedLayers() const { return m_hasFixedLayers; } + void setHasFixedLayers(bool val) { m_hasFixedLayers = val; } + static int instancesCount(); private: @@ -139,6 +142,8 @@ private: bool m_haveContents; bool m_haveImage; + bool m_hasFixedLayers; + float m_translateX; float m_translateY; float m_currentTranslateX; |