Index: Source/core/rendering/RenderLayerStackingNode.cpp |
diff --git a/Source/core/rendering/RenderLayerStackingNode.cpp b/Source/core/rendering/RenderLayerStackingNode.cpp |
index 8133af3dc9e2166b2d6a430e7441cf833b136be0..a750ce8b08d10930d070635fcb7fe0bce1bb8bb3 100644 |
--- a/Source/core/rendering/RenderLayerStackingNode.cpp |
+++ b/Source/core/rendering/RenderLayerStackingNode.cpp |
@@ -90,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(); |
} |
@@ -116,12 +115,7 @@ void RenderLayerStackingNode::dirtyZOrderLists() |
void RenderLayerStackingNode::dirtyStackingContextZOrderLists() |
{ |
- RenderLayerStackingNode* stackingContextNode = ancestorStackingContextNode(); |
- if (stackingContextNode) |
- stackingContextNode->dirtyZOrderLists(); |
- |
- RenderLayerStackingNode* stackingNode = ancestorStackingNode(); |
- if (stackingNode && stackingNode != stackingContextNode) |
+ if (RenderLayerStackingNode* stackingNode = ancestorStackingContextNode()) |
stackingNode->dirtyZOrderLists(); |
} |
@@ -137,9 +131,8 @@ void RenderLayerStackingNode::dirtyNormalFlowList() |
m_normalFlowList->clear(); |
m_normalFlowListDirty = true; |
- if (!renderer()->documentBeingDestroyed()) { |
+ if (!renderer()->documentBeingDestroyed()) |
compositor()->setCompositingLayersNeedRebuild(); |
- } |
} |
void RenderLayerStackingNode::rebuildZOrderLists() |
@@ -299,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()) |
@@ -315,19 +308,22 @@ 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() |
+ RenderLayerModelObject* renderer = this->renderer(); |
+ |
+ 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; |
@@ -347,21 +343,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; |
} |