summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2011-07-25 16:01:54 -0700
committerShimeng (Simon) Wang <swang@google.com>2011-07-25 16:01:54 -0700
commitad322cf1eda011a4d60aa1f2f10f6487491e4019 (patch)
tree3da7f78bd24f555ddac1052091b55c521e3a7b56
parent7a6539d65a03ff89c193791e9fe0994f580a72a7 (diff)
downloadexternal_webkit-ad322cf1eda011a4d60aa1f2f10f6487491e4019.zip
external_webkit-ad322cf1eda011a4d60aa1f2f10f6487491e4019.tar.gz
external_webkit-ad322cf1eda011a4d60aa1f2f10f6487491e4019.tar.bz2
Refactor the overflow scroll fix.
Hope this is more understandable. issue: 4203823 Change-Id: Ib1d95f6b250baf4b94f706e090a9f087aa9b7ed8
-rw-r--r--Source/WebCore/rendering/RenderLayer.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp
index 0eae838..4e1c875 100644
--- a/Source/WebCore/rendering/RenderLayer.cpp
+++ b/Source/WebCore/rendering/RenderLayer.cpp
@@ -2274,13 +2274,16 @@ void RenderLayer::updateScrollInfoAfterLayout()
updateOverflowStatus(horizontalOverflow, verticalOverflow);
#if ENABLE(ANDROID_OVERFLOW_SCROLL)
- bool hasOverflowScroll = ((horizontalOverflow && m_hBar) || (verticalOverflow && m_vBar)) &&
- ((!renderer()->isTextArea() && !renderer()->isRenderBlock()) ||
- // Disable customized overflow scroll for positioned RenderBlock.
- (renderer()->isRenderBlock() && !renderer()->isPositioned()) ||
- // 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();