[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

hyatt at apple.com hyatt at apple.com
Wed Dec 22 13:34:51 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit b297b494454ce822b8c561980fd5d8c0a86fdb69
Author: hyatt at apple.com <hyatt at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Sep 20 20:21:34 2010 +0000

    https://bugs.webkit.org/show_bug.cgi?id=46114, two tables repaint tests failing on bots.
    
    Reviewed by Beth Dakin.
    
    Patch layoutRows to apply the layout delta when setting a new cell location prior to laying out the cell.
    
    The layout delta is then removed after layout has happened when the repaint check is done.  This change
    makes cell layout match block child layout, and now the cells have the correct new location up front
    when laying out (a necessity for pagination).
    
    * rendering/RenderTableSection.cpp:
    (WebCore::RenderTableSection::layoutRows):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@67879 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 60b21ce..0d4b79d 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2010-09-20  David Hyatt  <hyatt at apple.com>
+
+        Reviewed by Beth Dakin.
+
+        https://bugs.webkit.org/show_bug.cgi?id=46114, two tables repaint tests failing on bots.
+
+        Patch layoutRows to apply the layout delta when setting a new cell location prior to laying out the cell.
+        
+        The layout delta is then removed after layout has happened when the repaint check is done.  This change
+        makes cell layout match block child layout, and now the cells have the correct new location up front
+        when laying out (a necessity for pagination).
+
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::layoutRows):
+
 2010-09-20  Jacob Dinu  <dinu.jacob at nokia.com>
 
         Reviewed by Adam Barth.
diff --git a/WebCore/rendering/RenderTableSection.cpp b/WebCore/rendering/RenderTableSection.cpp
index b5a9c69..72338b7 100644
--- a/WebCore/rendering/RenderTableSection.cpp
+++ b/WebCore/rendering/RenderTableSection.cpp
@@ -604,31 +604,34 @@ int RenderTableSection::layoutRows(int toAdd)
             cell->setIntrinsicPaddingBottom(be);
             
             IntRect oldCellRect(cell->x(), cell->y() , cell->width(), cell->height());
-        
+            
             if (style()->direction() == RTL)
                 cell->setLocation(table()->columnPositions()[nEffCols] - table()->columnPositions()[table()->colToEffCol(cell->col() + cell->colSpan())] + hspacing, m_rowPos[rindx]);
             else
                 cell->setLocation(table()->columnPositions()[c] + hspacing, m_rowPos[rindx]);
+            view()->addLayoutDelta(IntSize(oldCellRect.x() - cell->x(), oldCellRect.y() - cell->y()));
 
             if (te != oldTe || be != oldBe)
                 cell->setNeedsLayout(true, false);
             
             if (!cell->needsLayout() && view()->layoutState()->m_pageHeight && view()->layoutState()->pageY(cell->y()) != cell->pageY())
                 cell->setChildNeedsLayout(true, false);
-                
+            
             cell->layoutIfNeeded();
             
             if (view()->layoutState()->m_pageHeight && cell->height() != rHeight)
                 cell->setHeight(rHeight); // FIXME: Pagination might have made us change size.  For now just shrink or grow the cell to fit without doing a relayout.
-
-            if ((te != oldTe || be > oldBe) && !table()->selfNeedsLayout() && cell->checkForRepaintDuringLayout())
-                cell->repaint();
-
-            // If the cell moved, we have to repaint it as well as any floating/positioned
-            // descendants.  An exception is if we need a layout.  In this case, we know we're going to
-            // repaint ourselves (and the cell) anyway.
-            if (!table()->selfNeedsLayout() && cell->checkForRepaintDuringLayout())
-                cell->repaintDuringLayoutIfMoved(oldCellRect);
+        
+            IntSize childOffset(cell->x() - oldCellRect.x(), cell->y() - oldCellRect.y());
+            if (childOffset.width() || childOffset.height()) {
+                view()->addLayoutDelta(childOffset);
+
+                // If the child moved, we have to repaint it as well as any floating/positioned
+                // descendants.  An exception is if we need a layout.  In this case, we know we're going to
+                // repaint ourselves (and the child) anyway.
+                if (!table()->selfNeedsLayout() && cell->checkForRepaintDuringLayout())
+                    cell->repaintDuringLayoutIfMoved(oldCellRect);
+            }
         }
     }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list