void RenderLayerStackingNode::updateStackingNodesAfterStyleChange(const RenderStyle* oldStyle)
{
    bool wasStackingContext = oldStyle ? !oldStyle->hasAutoZIndex() : false;
    int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;

    bool isStackingContext = this->isStackingContext();
    if (isStackingContext == wasStackingContext && oldZIndex == zIndex())
        return;

    dirtyStackingContextZOrderLists();

    if (isStackingContext)
        dirtyZOrderLists();
    else
        clearZOrderLists();
}
void RenderLayerStackingNode::updateStackingNodesAfterStyleChange(const RenderStyle* oldStyle)
{
    bool wasStackingContext = oldStyle ? isStackingContext(oldStyle) : false;
    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
    // likely be folded along with the rest.
    bool isStackingContext = this->isStackingContext();
    if (isStackingContext == wasStackingContext && oldVisibility == renderer()->style()->visibility() && oldZIndex == zIndex())
        return;

    dirtyStackingContainerZOrderLists();

    if (isStackingContainer())
        dirtyZOrderLists();
    else
        clearZOrderLists();

    compositor()->setNeedsUpdateCompositingRequirementsState();
}
Пример #3
0
void PaintLayerStackingNode::styleDidChange(const ComputedStyle* oldStyle) {
  bool wasStackingContext = oldStyle ? oldStyle->isStackingContext() : false;
  int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;

  bool isStackingContext = this->isStackingContext();
  bool shouldBeStacked = layoutObject()->styleRef().isStacked();
  if (isStackingContext == wasStackingContext &&
      m_isStacked == shouldBeStacked && oldZIndex == zIndex())
    return;

  dirtyStackingContextZOrderLists();

  if (isStackingContext)
    dirtyZOrderLists();
  else
    clearZOrderLists();

  if (m_isStacked != shouldBeStacked) {
    m_isStacked = shouldBeStacked;
    if (!layoutObject()->documentBeingDestroyed() && !layer()->isRootLayer())
      compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
  }
}