summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebCore/config.h3
-rw-r--r--WebCore/rendering/RenderView.cpp27
2 files changed, 30 insertions, 0 deletions
diff --git a/WebCore/config.h b/WebCore/config.h
index 9c14b28..cdbc0a4 100644
--- a/WebCore/config.h
+++ b/WebCore/config.h
@@ -137,6 +137,9 @@
#define ANDROID_FIX
+// Ensure that the fixed elements are always relative to the top document.
+#define ANDROID_FIXED_ELEMENTS
+
// Passes the webkit-originated changes of a focused textfield to our UI
// thread
#define ANDROID_ACCEPT_CHANGES_TO_FOCUSED_TEXTFIELDS
diff --git a/WebCore/rendering/RenderView.cpp b/WebCore/rendering/RenderView.cpp
index 502563e..094abfd 100644
--- a/WebCore/rendering/RenderView.cpp
+++ b/WebCore/rendering/RenderView.cpp
@@ -151,12 +151,30 @@ void RenderView::mapLocalToContainer(RenderBoxModelObject* repaintContainer, boo
// then we should have found it by now.
ASSERT_UNUSED(repaintContainer, !repaintContainer || repaintContainer == this);
+#ifdef ANDROID_FIXED_ELEMENTS
+#if ENABLE(COMPOSITED_FIXED_ELEMENTS)
+ const Settings * settings = document()->settings();
+ if (settings && (settings->viewportWidth() == -1 || settings->viewportWidth() == 0) &&
+ !settings->viewportUserScalable())
+#else
+ if (false)
+#endif
+#endif
if (fixed && m_frameView)
transformState.move(m_frameView->scrollOffset());
}
void RenderView::mapAbsoluteToLocalPoint(bool fixed, bool /*useTransforms*/, TransformState& transformState) const
{
+#ifdef ANDROID_FIXED_ELEMENTS
+#if ENABLE(COMPOSITED_FIXED_ELEMENTS)
+ const Settings * settings = document()->settings();
+ if (settings && (settings->viewportWidth() == -1 || settings->viewportWidth() == 0) &&
+ !settings->viewportUserScalable())
+#else
+ if (false)
+#endif
+#endif
if (fixed && m_frameView)
transformState.move(-m_frameView->scrollOffset());
}
@@ -280,6 +298,15 @@ void RenderView::computeRectForRepaint(RenderBoxModelObject* repaintContainer, I
if (printing())
return;
+#ifdef ANDROID_FIXED_ELEMENTS
+#if ENABLE(COMPOSITED_FIXED_ELEMENTS)
+ const Settings * settings = document()->settings();
+ if (settings && (settings->viewportWidth() == -1 || settings->viewportWidth() == 0) &&
+ !settings->viewportUserScalable())
+#else
+ if (false)
+#endif
+#endif
if (fixed && m_frameView)
rect.move(m_frameView->scrollX(), m_frameView->scrollY());