| Index: Source/core/rendering/RenderLayer.cpp
|
| diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
|
| index 568ec4325ca7a17e61fad7d469a296879bd292b0..c0741c2f21f31b7c0d93224bd81ed22daad6753a 100644
|
| --- a/Source/core/rendering/RenderLayer.cpp
|
| +++ b/Source/core/rendering/RenderLayer.cpp
|
| @@ -51,6 +51,7 @@
|
| #include "core/css/PseudoStyleRequest.h"
|
| #include "core/dom/Document.h"
|
| #include "core/dom/DocumentEventQueue.h"
|
| +#include "core/dom/PseudoElement.h"
|
| #include "core/dom/WebCoreMemoryInstrumentation.h"
|
| #include "core/dom/shadow/ShadowRoot.h"
|
| #include "core/editing/FrameSelection.h"
|
| @@ -4265,15 +4266,6 @@ bool RenderLayer::isInTopLayer() const
|
| return node && node->isElementNode() && toElement(node)->isInTopLayer();
|
| }
|
|
|
| -bool RenderLayer::isInTopLayerSubtree() const
|
| -{
|
| - for (const RenderLayer* layer = this; layer; layer = layer->parent()) {
|
| - if (layer->isInTopLayer())
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| // Compute the z-offset of the point in the transformState.
|
| // This is effectively projecting a ray normal to the plane of ancestor, finding where that
|
| // ray intersects target, and computing the z delta between those two points.
|
| @@ -5620,8 +5612,9 @@ void RenderLayer::rebuildZOrderLists(OwnPtr<Vector<RenderLayer*> >& posZOrderLis
|
| for (RenderObject* child = view->firstChild(); child; child = child->nextSibling()) {
|
| Element* childElement = (child->node() && child->node()->isElementNode()) ? toElement(child->node()) : 0;
|
| if (childElement && childElement->isInTopLayer()) {
|
| - RenderLayer* layer = toRenderLayerModelObject(child)->layer();
|
| - posZOrderList->append(layer);
|
| + if (Element* backdrop = childElement->pseudoElement(BACKDROP))
|
| + posZOrderList->append(toRenderLayerModelObject(backdrop->renderer())->layer());
|
| + posZOrderList->append(toRenderLayerModelObject(child)->layer());
|
| }
|
| }
|
| }
|
| @@ -5648,7 +5641,7 @@ void RenderLayer::updateNormalFlowList()
|
|
|
| void RenderLayer::collectLayers(bool includeHiddenLayers, OwnPtr<Vector<RenderLayer*> >& posBuffer, OwnPtr<Vector<RenderLayer*> >& negBuffer, const RenderLayer* layerToForceAsStackingContainer, CollectLayersBehavior collectLayersBehavior)
|
| {
|
| - if (isInTopLayer())
|
| + if (isInTopLayer() || isBackdrop())
|
| return;
|
|
|
| updateDescendantDependentFlags();
|
|
|