diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderLayer.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderLayer.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp index 6aff65c..4e1c875 100644 --- a/Source/WebCore/rendering/RenderLayer.cpp +++ b/Source/WebCore/rendering/RenderLayer.cpp @@ -2274,10 +2274,16 @@ void RenderLayer::updateScrollInfoAfterLayout() updateOverflowStatus(horizontalOverflow, verticalOverflow); #if ENABLE(ANDROID_OVERFLOW_SCROLL) - bool hasOverflowScroll = ((horizontalOverflow && m_hBar) || (verticalOverflow && m_vBar)) - // Disable UI side scrolling for textareas, unless they are readonly. - && (!renderer()->isTextArea() || (renderer()->node() - && static_cast<HTMLTextAreaElement*>(renderer()->node())->readOnly())); + bool hasOverflowScroll = ((horizontalOverflow && m_hBar) || (verticalOverflow && m_vBar)); + if (hasOverflowScroll) { + // Disable Android overflow scroll for positioned RenderBlock. + if (renderer()->isRenderBlock() && renderer()->isPositioned()) + hasOverflowScroll = false; + // Disable UI side scrolling for non-readonly textareas. + else if (renderer()->isTextArea() && (!renderer()->node() + || !static_cast<HTMLTextAreaElement*>(renderer()->node())->readOnly())) + hasOverflowScroll = false; + } if (hasOverflowScroll != m_hasOverflowScroll) { m_hasOverflowScroll = hasOverflowScroll; dirtyZOrderLists(); |