| Index: Source/core/rendering/RenderLayerStackingNode.cpp
|
| diff --git a/Source/core/rendering/RenderLayerStackingNode.cpp b/Source/core/rendering/RenderLayerStackingNode.cpp
|
| index f335b4bd269a3342f9d6e2c878267c68c83608cc..a6ad456c69f5c955a97a3415e2faf3f584441177 100644
|
| --- a/Source/core/rendering/RenderLayerStackingNode.cpp
|
| +++ b/Source/core/rendering/RenderLayerStackingNode.cpp
|
| @@ -56,8 +56,6 @@ namespace WebCore {
|
| // layer about some of its state.
|
| RenderLayerStackingNode::RenderLayerStackingNode(RenderLayer* layer)
|
| : m_layer(layer)
|
| - , m_descendantsAreContiguousInStackingOrder(false)
|
| - , m_descendantsAreContiguousInStackingOrderDirty(true)
|
| , m_normalFlowListDirty(true)
|
| #if !ASSERT_DISABLED
|
| , m_layerListMutationAllowed(true)
|
| @@ -92,8 +90,7 @@ static inline bool compareZIndex(RenderLayerStackingNode* first, RenderLayerStac
|
|
|
| RenderLayerCompositor* RenderLayerStackingNode::compositor() const
|
| {
|
| - if (!renderer()->view())
|
| - return 0;
|
| + ASSERT(renderer()->view());
|
| return renderer()->view()->compositor();
|
| }
|
|
|
| @@ -112,20 +109,13 @@ void RenderLayerStackingNode::dirtyZOrderLists()
|
| m_negZOrderList->clear();
|
| m_zOrderListsDirty = true;
|
|
|
| - m_descendantsAreContiguousInStackingOrderDirty = true;
|
| -
|
| if (!renderer()->documentBeingDestroyed())
|
| compositor()->setCompositingLayersNeedRebuild();
|
| }
|
|
|
| void RenderLayerStackingNode::dirtyStackingContextZOrderLists()
|
| {
|
| - RenderLayerStackingNode* stackingContextNode = ancestorStackingContextNode();
|
| - if (stackingContextNode)
|
| - stackingContextNode->dirtyZOrderLists();
|
| -
|
| - RenderLayerStackingNode* stackingNode = ancestorStackingNode();
|
| - if (stackingNode && stackingNode != stackingContextNode)
|
| + if (RenderLayerStackingNode* stackingNode = ancestorStackingContextNode())
|
| stackingNode->dirtyZOrderLists();
|
| }
|
|
|
| @@ -141,9 +131,8 @@ void RenderLayerStackingNode::dirtyNormalFlowList()
|
| m_normalFlowList->clear();
|
| m_normalFlowListDirty = true;
|
|
|
| - if (!renderer()->documentBeingDestroyed()) {
|
| + if (!renderer()->documentBeingDestroyed())
|
| compositor()->setCompositingLayersNeedRebuild();
|
| - }
|
| }
|
|
|
| void RenderLayerStackingNode::rebuildZOrderLists()
|
| @@ -303,7 +292,7 @@ void RenderLayerStackingNode::updateStackingNodesAfterStyleChange(const RenderSt
|
| EVisibility oldVisibility = oldStyle ? oldStyle->visibility() : VISIBLE;
|
| int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;
|
|
|
| - // FIXME: RenderLayer already handles visibility changes through our visiblity dirty bits. This logic could
|
| + // FIXME: RenderLayer already handles visibility changes through our visibility dirty bits. This logic could
|
| // likely be folded along with the rest.
|
| bool isStackingContext = this->isStackingContext();
|
| if (isStackingContext == wasStackingContext && oldVisibility == renderer()->style()->visibility() && oldZIndex == zIndex())
|
| @@ -319,22 +308,7 @@ void RenderLayerStackingNode::updateStackingNodesAfterStyleChange(const RenderSt
|
|
|
| bool RenderLayerStackingNode::shouldBeNormalFlowOnly() const
|
| {
|
| - const bool couldBeNormalFlow = renderer()->hasOverflowClip()
|
| - || renderer()->hasReflection()
|
| - || renderer()->hasMask()
|
| - || renderer()->isCanvas()
|
| - || renderer()->isVideo()
|
| - || renderer()->isEmbeddedObject()
|
| - || renderer()->isRenderIFrame()
|
| - || (renderer()->style()->specifiesColumns() && !layer()->isRootLayer());
|
| - const bool preventsElementFromBeingNormalFlow = renderer()->isPositioned()
|
| - || renderer()->hasTransform()
|
| - || renderer()->hasClipPath()
|
| - || renderer()->hasFilter()
|
| - || renderer()->hasBlendMode()
|
| - || layer()->isTransparent();
|
| -
|
| - return couldBeNormalFlow && !preventsElementFromBeingNormalFlow;
|
| + return !isStackingContext() && !renderer()->isPositioned();
|
| }
|
|
|
| void RenderLayerStackingNode::updateIsNormalFlowOnly()
|
| @@ -351,21 +325,11 @@ void RenderLayerStackingNode::updateIsNormalFlowOnly()
|
|
|
| RenderLayerStackingNode* RenderLayerStackingNode::ancestorStackingContextNode() const
|
| {
|
| - RenderLayer* ancestor = layer()->parent();
|
| - while (ancestor && !ancestor->stackingNode()->isStackingContext())
|
| - ancestor = ancestor->parent();
|
| - if (ancestor)
|
| - return ancestor->stackingNode();
|
| - return 0;
|
| -}
|
| -
|
| -RenderLayerStackingNode* RenderLayerStackingNode::ancestorStackingNode() const
|
| -{
|
| - RenderLayer* ancestor = layer()->parent();
|
| - while (ancestor && !ancestor->stackingNode()->isStackingContext())
|
| - ancestor = ancestor->parent();
|
| - if (ancestor)
|
| - return ancestor->stackingNode();
|
| + for (RenderLayer* ancestor = layer()->parent(); ancestor; ancestor = ancestor->parent()) {
|
| + RenderLayerStackingNode* stackingNode = ancestor->stackingNode();
|
| + if (stackingNode->isStackingContext())
|
| + return stackingNode;
|
| + }
|
| return 0;
|
| }
|
|
|
|
|