Changeset 86628 in webkit


Ignore:
Timestamp:
May 16, 2011 4:10:49 PM (13 years ago)
Author:
eric@webkit.org
Message:

2011-05-16 Eric Seidel <eric@webkit.org>

Reviewed by Adam Barth.

Document why RenderBlockLineLayout has its own deleteLineBoxTree implementation
https://bugs.webkit.org/show_bug.cgi?id=60925

I suspect this difference is really just papering over other bugs
but now that I finally understand the difference, I should at least
document it for others.

  • rendering/RenderBlockLineLayout.cpp: (WebCore::deleteLineRange): (WebCore::RenderBlock::determineStartPosition):
Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r86625 r86628  
     12011-05-16  Eric Seidel  <eric@webkit.org>
     2
     3        Reviewed by Adam Barth.
     4
     5        Document why RenderBlockLineLayout has its own deleteLineBoxTree implementation
     6        https://bugs.webkit.org/show_bug.cgi?id=60925
     7
     8        I suspect this difference is really just papering over other bugs
     9        but now that I finally understand the difference, I should at least
     10        document it for others.
     11
     12        * rendering/RenderBlockLineLayout.cpp:
     13        (WebCore::deleteLineRange):
     14        (WebCore::RenderBlock::determineStartPosition):
     15
    1162011-05-16  Alok Priyadarshi  <alokp@chromium.org>
    217
  • trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp

    r86093 r86628  
    823823        repaintLogicalTop = min(repaintLogicalTop, boxToDelete->logicalTopVisualOverflow());
    824824        repaintLogicalBottom = max(repaintLogicalBottom, boxToDelete->logicalBottomVisualOverflow());
     825        // Note: deleteLineRange(renderArena(), firstRootBox()) is not identical to deleteLineBoxTree().
     826        // deleteLineBoxTree uses nextLineBox() instead of nextRootBox() when traversing.
    825827        RootInlineBox* next = boxToDelete->nextRootBox();
    826828        boxToDelete->deleteLine(arena);
     
    12561258
    12571259    if (fullLayout) {
    1258         // Nuke all our lines.
    1259         if (firstRootBox()) {
    1260             RenderArena* arena = renderArena();
    1261             curr = firstRootBox();
    1262             while (curr) {
    1263                 RootInlineBox* next = curr->nextRootBox();
    1264                 curr->deleteLine(arena);
    1265                 curr = next;
    1266             }
    1267             ASSERT(!firstLineBox() && !lastLineBox());
    1268         }
     1260        // FIXME: This should just call deleteLineBoxTree, but that causes
     1261        // crashes for fast/repaint tests.
     1262        RenderArena* arena = renderArena();
     1263        curr = firstRootBox();
     1264        while (curr) {
     1265            // Note: This uses nextRootBox() insted of nextLineBox() like deleteLineBoxTree does.
     1266            RootInlineBox* next = curr->nextRootBox();
     1267            curr->deleteLine(arena);
     1268            curr = next;
     1269        }
     1270        ASSERT(!firstLineBox() && !lastLineBox());
    12691271    } else {
    12701272        if (curr) {
Note: See TracChangeset for help on using the changeset viewer.