Changeset 13439 in webkit


Ignore:
Timestamp:
Mar 22, 2006 2:21:10 PM (18 years ago)
Author:
bdakin
Message:

Reviewed by Hyatt

Fix for <rdar://problem/4471984> repro crash CSS position for html/
table=relative causes crash when hiding table

Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r13437 r13439  
     12006-03-22  Beth Dakin  <bdakin@apple.com>
     2
     3        Reviewed by Hyatt
     4
     5        Fix for <rdar://problem/4471984> repro crash CSS position for html/
     6        table=relative causes crash when hiding table
     7
     8        * css/cssstyleselector.cpp:
     9        (WebCore::CSSStyleSelector::adjustRenderStyle): If an object is
     10        positioned, relatively positioned, or transparent, it should always
     11        have auto indexing. Auto z-index for the root should always be 0.
     12        * rendering/RenderLayer.cpp:
     13        (WebCore::RenderLayer::removeChild): This is not part of the bug
     14        fix; just using a local variable that was created for the stacking
     15        context instead of recalculating it.
     16
    1172006-03-22  David Hyatt  <hyatt@apple.com>
    218
  • trunk/WebCore/css/cssstyleselector.cpp

    r13404 r13439  
    973973    // Make sure our z-index value is only applied if the object is positioned,
    974974    // relatively positioned, or transparent.
    975     if (style->position() == StaticPosition && style->opacity() == 1.0f) {
    976         if (e && e->getDocument()->documentElement() == e)
    977             style->setZIndex(0); // The root has a z-index of 0 if not positioned or transparent.
    978         else
    979             style->setHasAutoZIndex(); // Everyone else gets an auto z-index.
    980     }
    981 
    982     // Auto z-index becomes 0 for transparent objects.  This prevents cases where
    983     // objects that should be blended as a single unit end up with a non-transparent object
    984     // wedged in between them.
    985     if (style->opacity() < 1.0f && style->hasAutoZIndex())
     975    if (style->position() == StaticPosition && style->opacity() == 1.0f)
     976        style->setHasAutoZIndex();
     977
     978    // Auto z-index becomes 0 for the root element and transparent objects.  This prevents
     979    // cases where objects that should be blended as a single unit end up with a non-transparent
     980    // object wedged in between them.
     981    if (style->hasAutoZIndex() && ((e && e->getDocument()->documentElement() == e) || style->opacity() < 1.0f))
    986982        style->setZIndex(0);
    987983   
  • trunk/WebCore/rendering/RenderLayer.cpp

    r13397 r13439  
    453453    RenderLayer* stackingContext = oldChild->stackingContext();
    454454    if (stackingContext)
    455         oldChild->stackingContext()->dirtyZOrderLists();
     455        stackingContext->dirtyZOrderLists();
    456456   
    457457    oldChild->setPreviousSibling(0);
Note: See TracChangeset for help on using the changeset viewer.