Source/core/rendering/RenderLayer.cpp
// Return true if this layer or any preserve-3d descendants have 3d.
Return true if this layer or any preserve-3d descendants have 3d.
Return true if this layer or any preserve - 3d descendants have 3d .
bool RenderLayer::update3DTransformedDescendantStatus()
{
    if (m_3DTransformedDescendantStatusDirty) {
        m_has3DTransformedDescendant = false;
        m_stackingNode->updateZOrderLists();
        RenderLayerStackingNodeIterator iterator(*m_stackingNode.get(), PositiveZOrderChildren | NegativeZOrderChildren);
        while (RenderLayerStackingNode* node = iterator.next())
            m_has3DTransformedDescendant |= node->layer()->update3DTransformedDescendantStatus();
        m_3DTransformedDescendantStatusDirty = false;
    }
    if (preserves3D())
        return has3DTransform() || m_has3DTransformedDescendant;
    return has3DTransform();
}
bool RenderLayer :: update3DTransformedDescendantStatus ( ) { if ( m_3DTransformedDescendantStatusDirty ) { m_has3DTransformedDescendant = false ; m_stackingNode -> updateZOrderLists ( ) ; RenderLayerStackingNodeIterator iterator ( * m_stackingNode . get ( ) , PositiveZOrderChildren | NegativeZOrderChildren ) ; while ( RenderLayerStackingNode * node = iterator . next ( ) ) m_has3DTransformedDescendant |= node -> layer ( ) -> update3DTransformedDescendantStatus ( ) ; m_3DTransformedDescendantStatusDirty = false ; } if ( preserves3D ( ) ) return has3DTransform ( ) || m_has3DTransformedDescendant ; return has3DTransform ( ) ; }
Return true if this layer or any preserve-3d descendants have 3d.
Return true if this layer or any preserve - 3d descendants have 3d .
// Transformed or preserve-3d descendants can only be in the z-order lists, not // in the normal flow list, so we only need to check those. // If we live in a 3d hierarchy, then the layer at the root of that hierarchy needs // the m_has3DTransformedDescendant set.