Title: [237122] trunk/Source/WebCore
- Revision
- 237122
- Author
- simon.fra...@apple.com
- Date
- 2018-10-15 10:25:45 -0700 (Mon, 15 Oct 2018)
Log Message
Make a helper function to check for reflection layers
https://bugs.webkit.org/show_bug.cgi?id=190584
Reviewed by Zalan Bujtas.
Add RenderLayer::isReflectionLayer() which returns true if the passed layer
is the layer of this layer's reflection. It's used in z-order list building.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderLayer.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (237121 => 237122)
--- trunk/Source/WebCore/ChangeLog 2018-10-15 17:25:42 UTC (rev 237121)
+++ trunk/Source/WebCore/ChangeLog 2018-10-15 17:25:45 UTC (rev 237122)
@@ -1,5 +1,23 @@
2018-10-15 Simon Fraser <simon.fra...@apple.com>
+ Make a helper function to check for reflection layers
+ https://bugs.webkit.org/show_bug.cgi?id=190584
+
+ Reviewed by Zalan Bujtas.
+
+ Add RenderLayer::isReflectionLayer() which returns true if the passed layer
+ is the layer of this layer's reflection. It's used in z-order list building.
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::updateNormalFlowList):
+ (WebCore::RenderLayer::rebuildZOrderLists):
+ (WebCore::RenderLayer::collectLayers):
+ (WebCore::expandClipRectForDescendantsAndReflection):
+ (WebCore::RenderLayer::calculateClipRects const):
+ * rendering/RenderLayer.h:
+
+2018-10-15 Simon Fraser <simon.fra...@apple.com>
+
RenderLayer::addChild() and removeChild() should take references
https://bugs.webkit.org/show_bug.cgi?id=190582
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (237121 => 237122)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2018-10-15 17:25:42 UTC (rev 237121)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2018-10-15 17:25:45 UTC (rev 237122)
@@ -643,7 +643,7 @@
for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
// Ignore non-overflow layers and reflections.
- if (child->isNormalFlowOnly() && (!m_reflection || reflectionLayer() != child)) {
+ if (child->isNormalFlowOnly() && !isReflectionLayer(*child)) {
if (!m_normalFlowList)
m_normalFlowList = std::make_unique<Vector<RenderLayer*>>();
m_normalFlowList->append(child);
@@ -665,7 +665,7 @@
{
bool includeHiddenLayers = compositor().inCompositingMode();
for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
- if (!m_reflection || reflectionLayer() != child)
+ if (!isReflectionLayer(*child))
child->collectLayers(includeHiddenLayers, posZOrderList, negZOrderList);
}
@@ -700,7 +700,7 @@
if ((includeHiddenLayers || m_hasVisibleDescendant) && !isStacking) {
for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
// Ignore reflections.
- if (!m_reflection || reflectionLayer() != child)
+ if (!isReflectionLayer(*child))
child->collectLayers(includeHiddenLayers, positiveZOrderList, negativeZOrderList);
}
}
@@ -1850,7 +1850,7 @@
// Note: we don't have to walk z-order lists since transparent elements always establish
// a stacking container. This means we can just walk the layer tree directly.
for (RenderLayer* curr = layer.firstChild(); curr; curr = curr->nextSibling()) {
- if (!layer.reflection() || layer.reflectionLayer() != curr)
+ if (!layer.isReflectionLayer(*curr))
clipRect.unite(transparencyClipBox(*curr, rootLayer, transparencyBehavior, DescendantsOfTransparencyClipBox, paintBehavior));
}
}
@@ -6422,6 +6422,11 @@
return m_reflection ? m_reflection->layer() : nullptr;
}
+bool RenderLayer::isReflectionLayer(const RenderLayer& layer) const
+{
+ return m_reflection ? &layer == m_reflection->layer() : false;
+}
+
void RenderLayer::createReflection()
{
ASSERT(!m_reflection);
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (237121 => 237122)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2018-10-15 17:25:42 UTC (rev 237121)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2018-10-15 17:25:45 UTC (rev 237122)
@@ -265,6 +265,7 @@
bool isReflection() const { return renderer().isReplica(); }
RenderReplica* reflection() const { return m_reflection.get(); }
RenderLayer* reflectionLayer() const;
+ bool isReflectionLayer(const RenderLayer&) const;
const LayoutPoint& location() const { return m_topLeft; }
void setLocation(const LayoutPoint& p) { m_topLeft = p; }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes