summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/rendering')
-rw-r--r--WebCore/rendering/RenderBox.cpp8
-rw-r--r--WebCore/rendering/RenderLayer.cpp26
-rw-r--r--WebCore/rendering/RenderLayerCompositor.cpp15
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)