Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1326)

Unified Diff: Source/core/rendering/RenderLayer.cpp

Issue 17654008: Implement the ::backdrop pseudo-element for modal <dialog>. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix failing tests Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderLayer.cpp
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
index 014321da993929f0e43b8c59ba9dad1d5a444a5b..01ce52c7b959a4521cadcb92f0de4ed5c63de1c0 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"
@@ -4281,15 +4282,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.
@@ -5633,8 +5625,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());
Julien - ping for review 2013/06/27 22:49:00 I haven't seen why it's a fine assumption to assum
falken 2013/06/28 08:06:52 Done. ::backdrop gets a non-auto z-index now, like
+ posZOrderList->append(toRenderLayerModelObject(child)->layer());
Julien - ping for review 2013/06/27 22:49:00 The ordering is wrong as |backdrop| should be *bel
falken 2013/06/28 08:06:52 It's correct. The layer list is ordered from botto
}
}
}
@@ -5661,7 +5654,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();

Powered by Google App Engine
This is Rietveld 408576698