diff options
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; |