diff options
Diffstat (limited to 'WebCore/rendering')
-rw-r--r-- | WebCore/rendering/RenderBox.cpp | 8 | ||||
-rw-r--r-- | WebCore/rendering/RenderLayer.cpp | 26 | ||||
-rw-r--r-- | WebCore/rendering/RenderLayerCompositor.cpp | 15 |
3 files changed, 12 insertions, 37 deletions
diff --git a/WebCore/rendering/RenderBox.cpp b/WebCore/rendering/RenderBox.cpp index 8d18440..2deeffc 100644 --- a/WebCore/rendering/RenderBox.cpp +++ b/WebCore/rendering/RenderBox.cpp @@ -73,10 +73,6 @@ bool RenderBox::s_hadOverflowClip = false; RenderBox::RenderBox(Node* node) : RenderBoxModelObject(node) -#ifdef ANDROID_LAYOUT - , m_visibleWidth(0) - , m_isVisibleWidthChangedBeforeLayout(false) -#endif , m_marginLeft(0) , m_marginRight(0) , m_marginTop(0) @@ -84,6 +80,10 @@ RenderBox::RenderBox(Node* node) , m_minPrefWidth(-1) , m_maxPrefWidth(-1) , m_inlineBoxWrapper(0) +#ifdef ANDROID_LAYOUT + , m_visibleWidth(0) + , m_isVisibleWidthChangedBeforeLayout(false) +#endif { setIsBox(); } diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp index f0c6333..368a1a7 100644 --- a/WebCore/rendering/RenderLayer.cpp +++ b/WebCore/rendering/RenderLayer.cpp @@ -3238,16 +3238,18 @@ void RenderLayer::calculateRects(const RenderLayer* rootLayer, const IntRect& pa if (renderer()->hasOverflowClip() || renderer()->hasClip()) { // This layer establishes a clip of some kind. #if ENABLE(ANDROID_OVERFLOW_SCROLL) - if (renderer()->hasOverflowClip()) { + if (renderer()->hasOverflowClip() && + !m_scrollDimensionsDirty && + (m_scrollWidth > renderBox()->clientWidth() || + m_scrollHeight > renderBox()->clientHeight())) { RenderBox* box = toRenderBox(renderer()); layerBounds = backgroundRect = foregroundRect = outlineRect = IntRect(x, y, box->borderLeft() + box->borderRight() + m_scrollWidth, box->borderTop() + box->borderBottom() + m_scrollHeight); - } -#else + } else +#endif if (renderer()->hasOverflowClip()) foregroundRect.intersect(toRenderBox(renderer())->overflowClipRect(x, y)); -#endif if (renderer()->hasClip()) { // Clip applies to *us* as well, so go ahead and update the damageRect. IntRect newPosClip = toRenderBox(renderer())->clipRect(x, y); @@ -3757,24 +3759,10 @@ bool RenderLayer::shouldBeNormalFlowOnly() const && !isTransparent(); } -#if ENABLE(ANDROID_OVERFLOW_SCROLL) -static bool hasOverflowScroll(const RenderLayer* layer) -{ - RenderBox* box = layer->renderBox(); - if (!box || !box->node() || !box->node()->hasTagName(HTMLNames::divTag)) - return false; - EOverflow x = box->style()->overflowX(); - EOverflow y = box->style()->overflowY(); - return (x == OAUTO || x == OSCROLL || y == OAUTO || y == OSCROLL) && - (box->scrollWidth() > box->clientWidth() || - box->scrollHeight() > box->clientHeight()); -} -#endif - bool RenderLayer::isSelfPaintingLayer() const { #if ENABLE(ANDROID_OVERFLOW_SCROLL) - if (hasOverflowScroll(this)) + if (renderer()->hasOverflowClip()) return true; #endif return !isNormalFlowOnly() || renderer()->hasReflection() || renderer()->hasMask() || renderer()->isTableRow() || renderer()->isVideo() || renderer()->isEmbeddedObject() || renderer()->isRenderIFrame(); diff --git a/WebCore/rendering/RenderLayerCompositor.cpp b/WebCore/rendering/RenderLayerCompositor.cpp index 46278a2..f6e1442 100644 --- a/WebCore/rendering/RenderLayerCompositor.cpp +++ b/WebCore/rendering/RenderLayerCompositor.cpp @@ -1155,19 +1155,6 @@ bool RenderLayerCompositor::requiresCompositingForMobileSites(const RenderLayer* } #endif -#if ENABLE(ANDROID_OVERFLOW_SCROLL) -static bool requiresCompositingForOverflowScroll(const RenderLayer* layer) { - RenderBox* box = layer->renderBox(); - if (!box || !box->node()->hasTagName(HTMLNames::divTag)) - return false; - EOverflow x = box->style()->overflowX(); - EOverflow y = box->style()->overflowY(); - return (x == OAUTO || x == OSCROLL || y == OAUTO || y == OSCROLL) && - (box->scrollWidth() > box->clientWidth() || - box->scrollHeight() > box->clientHeight()); -} -#endif - // Note: this specifies whether the RL needs a compositing layer for intrinsic reasons. // Use needsToBeComposited() to determine if a RL actually needs a compositing layer. // static @@ -1183,7 +1170,7 @@ bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c #if PLATFORM(ANDROID) || requiresCompositingForMobileSites(layer) #if ENABLE(ANDROID_OVERFLOW_SCROLL) - || requiresCompositingForOverflowScroll(layer) + || renderer->hasOverflowClip() #endif #endif || requiresCompositingForVideo(renderer) |