Title: [151444] trunk
Revision
151444
Author
rob...@webkit.org
Date
2013-06-11 11:11:31 -0700 (Tue, 11 Jun 2013)

Log Message

Painting collapsed borders during scrolling
https://bugs.webkit.org/show_bug.cgi?id=85658

Reviewed by David Hyatt.

Source/WebCore:

Test: fast/repaint/table-cell-collapsed-border-scroll.html

WHen painting collapsed borders we need to paint the borders of the row above
the topmost dirtied row so that we compute the correct value for the dirtied row's collapsed border.

* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::paintObject):

LayoutTests:

* fast/repaint/table-cell-collapsed-border-scroll-expected.txt: Added.
* fast/repaint/table-cell-collapsed-border-scroll.html: Added.
* platform/qt/fast/repaint/table-cell-collapsed-border-scroll-expected.png: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (151443 => 151444)


--- trunk/LayoutTests/ChangeLog	2013-06-11 17:49:59 UTC (rev 151443)
+++ trunk/LayoutTests/ChangeLog	2013-06-11 18:11:31 UTC (rev 151444)
@@ -1,3 +1,14 @@
+2013-06-03  Robert Hogan  <rob...@webkit.org>
+
+        Painting collapsed borders during scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=85658
+
+        Reviewed by David Hyatt.
+
+        * fast/repaint/table-cell-collapsed-border-scroll-expected.txt: Added.
+        * fast/repaint/table-cell-collapsed-border-scroll.html: Added.
+        * platform/qt/fast/repaint/table-cell-collapsed-border-scroll-expected.png: Added.
+
 2013-06-11  Ryosuke Niwa  <rn...@webkit.org>
 
         editing/undo/undo-after-event-edited.html can be flaky

Added: trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll-expected.txt (0 => 151444)


--- trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll-expected.txt	2013-06-11 18:11:31 UTC (rev 151444)
@@ -0,0 +1,16 @@
+layer at (0,0) size 1076x1796
+  RenderView at (0,0) size 785x585
+layer at (0,0) size 785x1796
+  RenderBlock {HTML} at (0,0) size 785x1796
+    RenderBody {BODY} at (8,8) size 769x1780
+      RenderTable {TABLE} at (0,0) size 1068x1780 [color=#FFFFFF] [border: (178px none #808080)]
+        RenderTableSection {TBODY} at (178,178) size 712x1424
+          RenderTableRow {TR} at (0,0) size 712x712
+            RenderTableCell {TD} at (0,0) size 712x712 [border: (178px solid #0000FF)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (178,177) size 356x357
+                text run at (178,177) width 356: "B"
+          RenderTableRow {TR} at (0,712) size 712x712
+            RenderTableCell {TD} at (0,712) size 712x712 [border: (178px solid #FF0000) (178px solid #FFFF00)] [r=1 c=0 rs=1 cs=1]
+              RenderText {#text} at (178,177) size 356x357
+                text run at (178,177) width 356: "Y"
+scrolled to 0,1000
Property changes on: trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll.html (0 => 151444)


--- trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll.html	                        (rev 0)
+++ trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll.html	2013-06-11 18:11:31 UTC (rev 151444)
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+ <head>
+  <style>
+  table
+  {
+  border-collapse: collapse;
+  color: white;
+  font: 22.25em/1 Ahem;
+  }
+
+  td {padding: 0px;}
+
+  table#test td
+  {
+  border-style: solid;
+  border-width: 1em;
+  }
+
+  td#one {border-color: blue blue blue blue;}
+  td#two {border-color: yellow yellow yellow red;}
+
+  td#five {border-color: red yellow yellow yellow;}
+  td#six {border-color: red green green red;}
+  </style>
+    <script src="" type="text/_javascript_"></script>
+    <script>
+        function repaintTest()
+        {
+            window.scrollTo(0,1000);
+        }
+    </script>
+</head>
+<body _onload_="runRepaintTest();">
+  <!--- webkit.org/b/85658: Repaint collapsed borders correctly when scrolling. There should be a blue bar across the top when you load the page. -->
+  <table id="test">
+   <tr>
+    <td id="one">B</td>
+   </tr>
+   <tr>
+     <td id="five">Y</td> 
+   </tr>
+  </table>
+ </body>
+</html>
Property changes on: trunk/LayoutTests/fast/repaint/table-cell-collapsed-border-scroll.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/platform/mac-wk2/fast/repaint/table-cell-collapsed-border-scroll-expected.txt (0 => 151444)


--- trunk/LayoutTests/platform/mac-wk2/fast/repaint/table-cell-collapsed-border-scroll-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac-wk2/fast/repaint/table-cell-collapsed-border-scroll-expected.txt	2013-06-11 18:11:31 UTC (rev 151444)
@@ -0,0 +1,16 @@
+layer at (0,0) size 1076x1796
+  RenderView at (0,0) size 785x585
+layer at (0,0) size 785x1796
+  RenderBlock {HTML} at (0,0) size 785x1796
+    RenderBody {BODY} at (8,8) size 769x1780
+      RenderTable {TABLE} at (0,0) size 1068x1780 [color=#FFFFFF] [border: (178px none #808080)]
+        RenderTableSection {TBODY} at (178,178) size 712x1424
+          RenderTableRow {TR} at (0,0) size 712x712
+            RenderTableCell {TD} at (0,0) size 712x712 [border: (178px solid #0000FF)] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (178,178) size 356x356
+                text run at (178,178) width 356: "B"
+          RenderTableRow {TR} at (0,712) size 712x712
+            RenderTableCell {TD} at (0,712) size 712x712 [border: (178px solid #FF0000) (178px solid #FFFF00)] [r=1 c=0 rs=1 cs=1]
+              RenderText {#text} at (178,178) size 356x356
+                text run at (178,178) width 356: "Y"
+scrolled to 0,1000
Property changes on: trunk/LayoutTests/platform/mac-wk2/fast/repaint/table-cell-collapsed-border-scroll-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/platform/qt/fast/repaint/table-cell-collapsed-border-scroll-expected.png


(Binary files differ)
Property changes on: trunk/LayoutTests/platform/qt/fast/repaint/table-cell-collapsed-border-scroll-expected.png ___________________________________________________________________

Added: svn:mime-type

Modified: trunk/Source/WebCore/ChangeLog (151443 => 151444)


--- trunk/Source/WebCore/ChangeLog	2013-06-11 17:49:59 UTC (rev 151443)
+++ trunk/Source/WebCore/ChangeLog	2013-06-11 18:11:31 UTC (rev 151444)
@@ -1,3 +1,18 @@
+2013-06-03  Robert Hogan  <rob...@webkit.org>
+
+        Painting collapsed borders during scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=85658
+
+        Reviewed by David Hyatt.
+
+        Test: fast/repaint/table-cell-collapsed-border-scroll.html
+
+        WHen painting collapsed borders we need to paint the borders of the row above
+        the topmost dirtied row so that we compute the correct value for the dirtied row's collapsed border.
+
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::paintObject):
+
 2013-06-11  Peter Gal  <galpe...@inf.u-szeged.hu>
 
         [curl] Custom HTTP method support

Modified: trunk/Source/WebCore/rendering/RenderTableSection.cpp (151443 => 151444)


--- trunk/Source/WebCore/rendering/RenderTableSection.cpp	2013-06-11 17:49:59 UTC (rev 151443)
+++ trunk/Source/WebCore/rendering/RenderTableSection.cpp	2013-06-11 18:11:31 UTC (rev 151444)
@@ -1118,8 +1118,10 @@
         if (!m_hasMultipleCellLevels && !m_overflowingCells.size()) {
             if (paintInfo.phase == PaintPhaseCollapsedTableBorders) {
                 // Collapsed borders are painted from the bottom right to the top left so that precedence
-                // due to cell position is respected.
-                for (unsigned r = dirtiedRows.end(); r > dirtiedRows.start(); r--) {
+                // due to cell position is respected. We need to paint one row beyond the topmost dirtied
+                // row to calculate its collapsed border value.
+                unsigned startRow = dirtiedRows.start() ? dirtiedRows.start() - 1 : 0;
+                for (unsigned r = dirtiedRows.end(); r > startRow; r--) {
                     unsigned row = r - 1;
                     for (unsigned c = dirtiedColumns.end(); c > dirtiedColumns.start(); c--) {
                         unsigned col = c - 1;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to