diff options
| -rw-r--r-- | WebCore/config.h | 3 | ||||
| -rw-r--r-- | WebCore/rendering/RenderView.cpp | 27 |
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()); |
