| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 6e1ffea8d4011717cdb3065935949011c8022b08..387eeb6fc91fcea33edde843a5978416095567f2 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -251,6 +251,8 @@ void RenderLayer::updateLayerPositionsAfterLayout(const RenderLayer* rootLayer,
|
| {
|
| TRACE_EVENT0("blink_rendering", "RenderLayer::updateLayerPositionsAfterLayout");
|
|
|
| + m_clipper.clearClipRectsIncludingDescendants();
|
| +
|
| // FIXME: Remove incremental compositing updates after fixing the chicken/egg issues
|
| // https://code.google.com/p/chromium/issues/detail?id=343756
|
| DisableCompositingQueryAsserts disabler;
|
| @@ -265,9 +267,6 @@ void RenderLayer::updateLayerPositionRecursive(UpdateLayerPositionsFlags flags)
|
| if (flags & ForceMayNeedPaintInvalidation)
|
| m_renderer->setMayNeedPaintInvalidation(true);
|
|
|
| - // Clear our cached clip rect information.
|
| - m_clipper.clearClipRects();
|
| -
|
| if (hasOverflowControls()) {
|
| // FIXME: We should figure out the right time to position the overflow controls.
|
| // This call appears to be necessary to pass some layout test that use EventSender,
|
| @@ -345,54 +344,22 @@ bool RenderLayer::scrollsWithRespectTo(const RenderLayer* other) const
|
| return compositingInputs().ancestorScrollingLayer != other->compositingInputs().ancestorScrollingLayer;
|
| }
|
|
|
| -void RenderLayer::updateLayerPositionsAfterDocumentScroll()
|
| -{
|
| - ASSERT(this == renderer()->view()->layer());
|
| - updateLayerPositionsAfterScroll();
|
| -}
|
| -
|
| void RenderLayer::updateLayerPositionsAfterOverflowScroll()
|
| {
|
| - // FIXME: why is it OK to not check the ancestors of this layer in order to
|
| - // initialize the HasSeenViewportConstrainedAncestor and HasSeenAncestorWithOverflowClip flags?
|
| - updateLayerPositionsAfterScroll(IsOverflowScroll);
|
| + m_clipper.clearClipRectsIncludingDescendants();
|
| + updateLayerPositionsAfterScrollRecursive();
|
| }
|
|
|
| -void RenderLayer::updateLayerPositionsAfterScroll(UpdateLayerPositionsAfterScrollFlags flags)
|
| +void RenderLayer::updateLayerPositionsAfterScrollRecursive()
|
| {
|
| - // FIXME: This shouldn't be needed, but there are some corner cases where
|
| - // these flags are still dirty. Update so that the check below is valid.
|
| - updateDescendantDependentFlags();
|
| -
|
| - // If we have no visible content and no visible descendants, there is no point recomputing
|
| - // our rectangles as they will be empty. If our visibility changes, we are expected to
|
| - // recompute all our positions anyway.
|
| - if (subtreeIsInvisible())
|
| - return;
|
| -
|
| - if (updateLayerPosition())
|
| - flags |= HasChangedAncestor;
|
| -
|
| - if ((flags & HasChangedAncestor) || (flags & HasSeenViewportConstrainedAncestor) || (flags & IsOverflowScroll))
|
| - m_clipper.clearClipRects();
|
| -
|
| - if (renderer()->style()->hasViewportConstrainedPosition())
|
| - flags |= HasSeenViewportConstrainedAncestor;
|
| + updateLayerPosition();
|
|
|
| - if (renderer()->hasOverflowClip())
|
| - flags |= HasSeenAncestorWithOverflowClip;
|
| -
|
| - if ((flags & IsOverflowScroll) && (flags & HasSeenAncestorWithOverflowClip) && !renderer()->isTableCell()) {
|
| - // FIXME: We could track the repaint container as we walk down the tree.
|
| + // FIXME: We could track the repaint container as we walk down the tree.
|
| + if (!renderer()->isTableCell())
|
| m_renderer->setPreviousPaintInvalidationRect(m_renderer->boundsRectForPaintInvalidation(m_renderer->containerForPaintInvalidation()));
|
| - }
|
|
|
| for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
|
| - child->updateLayerPositionsAfterScroll(flags);
|
| -
|
| - // We don't update our reflection as scrolling is a translation which does not change the size()
|
| - // of an object, thus RenderReplica will still repaint itself properly as the layer position was
|
| - // updated above.
|
| + child->updateLayerPositionsAfterScrollRecursive();
|
| }
|
|
|
| void RenderLayer::updateTransformationMatrix()
|
|
|