2007-01-11 Mitz Pettel <mitz@webkit.org>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jan 2007 04:29:50 +0000 (04:29 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jan 2007 04:29:50 +0000 (04:29 +0000)
        Reviewed by Hyatt.

        - fix http://bugs.webkit.org/show_bug.cgi?id=12124
          RenderTable::section{Above,Below}() can return the wrong answer for the {footer,header}

        * rendering/RenderTable.cpp:
        (WebCore::resetSectionPointerIfNotBefore): Added this function to help with
        checking if a section being inserted is the going to be the first of its kind.
        (WebCore::RenderTable::addChild): Changed to maintain the pointers to the
        header, the footer, the caption and the first table body properly when objects
        are inserted in the middle. Also changed to make the first caption win over
        any other captions. This matches Firefox and what already used to happen when a
        section recalc took place.
        (WebCore::RenderTable::layout): Changed to use sectionBelow() for iterating
        over the sections from top to bottom.
        (WebCore::RenderTable::calcBorderLeft): Changed to really find the section
        containing the first row.
        (WebCore::RenderTable::calcBorderRight): Ditto.
        (WebCore::RenderTable::sectionAbove): Fixed a bug when the last section was
        skipped if the input was the footer.
        (WebCore::RenderTable::sectionBelow): Ditto for "first" and "header"
        respectively.

2007-01-11  Mitz Pettel  <mitz@webkit.org>

        Reviewed by Hyatt.

        - updated results for http://bugs.webkit.org/show_bug.cgi?id=12124
          RenderTable::section{Above,Below}() can return the wrong answer for the {footer,header}

        Collapsed borders changed in the "marvin" tests, as the footer cells now
        collapse correctly with the last row of the body. Visual differences not
        captured by the pixel results since they occurred below 600px.

        The "other" test has changed since in a table with multiple captions,
        now the first one wins. No visual difference in this case since both captions
        are the same.

        * tables/mozilla/marvin/backgr_layers-opacity-expected.txt:
        * tables/mozilla/marvin/backgr_position-table-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-cell-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-column-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-column-group-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-row-expected.txt:
        * tables/mozilla/marvin/backgr_simple-table-row-group-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-cell-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-column-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-column-group-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-quirks-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-row-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_border-table-row-group-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_layers-hide-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_layers-show-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_position-table-cell-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_position-table-column-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_position-table-column-group-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_position-table-row-expected.txt:
        * tables/mozilla_expected_failures/marvin/backgr_position-table-row-group-expected.txt:
        * tables/mozilla_expected_failures/other/test4-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@18791 268f45cc-cd09-0410-ab3c-d52691b4dbfc

27 files changed:
LayoutTests/ChangeLog
LayoutTests/tables/mozilla/marvin/backgr_layers-opacity-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_position-table-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-cell-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-column-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-column-group-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-row-expected.txt
LayoutTests/tables/mozilla/marvin/backgr_simple-table-row-group-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-cell-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-column-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-column-group-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-quirks-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-row-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_border-table-row-group-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_layers-hide-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_layers-show-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_position-table-cell-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_position-table-column-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_position-table-column-group-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_position-table-row-expected.txt
LayoutTests/tables/mozilla_expected_failures/marvin/backgr_position-table-row-group-expected.txt
LayoutTests/tables/mozilla_expected_failures/other/test4-expected.txt
WebCore/ChangeLog
WebCore/rendering/RenderTable.cpp

index 55592bb3f4182a9e11acc3c604abec17ad55e244..a7ea3547020b8903d8139e3e41069ad2accb5c24 100644 (file)
@@ -1,3 +1,43 @@
+2007-01-11  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Hyatt.
+
+        - updated results for http://bugs.webkit.org/show_bug.cgi?id=12124
+          RenderTable::section{Above,Below}() can return the wrong answer for the {footer,header}
+
+        Collapsed borders changed in the "marvin" tests, as the footer cells now
+        collapse correctly with the last row of the body. Visual differences not
+        captured by the pixel results since they occurred below 600px.
+
+        The "other" test has changed since in a table with multiple captions,
+        now the first one wins. No visual difference in this case since both captions
+        are the same.
+
+        * tables/mozilla/marvin/backgr_layers-opacity-expected.txt:
+        * tables/mozilla/marvin/backgr_position-table-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-cell-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-column-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-column-group-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-row-expected.txt:
+        * tables/mozilla/marvin/backgr_simple-table-row-group-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-cell-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-column-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-column-group-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-quirks-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-row-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_border-table-row-group-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_fixed-bg-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_layers-hide-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_layers-show-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_position-table-cell-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_position-table-column-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_position-table-column-group-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_position-table-row-expected.txt:
+        * tables/mozilla_expected_failures/marvin/backgr_position-table-row-group-expected.txt:
+        * tables/mozilla_expected_failures/other/test4-expected.txt:
+
 2007-01-11  Mitz Pettel  <mitz@webkit.org>
 
         Reviewed by Hyatt.
index d816a84ab98ec7d6ca8ed017f696927188e37ac1..d8dd483f45bba294fcd45b1e7074c438aa40d941 100644 (file)
@@ -151,9 +151,9 @@ layer at (8,1108) size 577x114
   RenderTableSection {TFOOT} at (0,317) size 577x114 [bgcolor=#FFFF00]
 layer at (8,1108) size 577x114
   RenderTableRow {TR} at (0,0) size 577x114 [bgcolor=#FF0000]
-    RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #000000)] [r=0 c=0 rs=1 cs=2]
-      RenderText {#text} at (2,2) size 47x22
-        text run at (2,2) width 47: "TD M"
+    RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #000000)] [r=0 c=0 rs=1 cs=2]
+      RenderText {#text} at (2,8) size 47x22
+        text run at (2,8) width 47: "TD M"
     RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #000000)] [r=0 c=2 rs=1 cs=1]
       RenderText {#text} at (2,2) size 46x22
         text run at (2,2) width 46: "TD O"
index bdefafec83309775ca10bd672db22fb9393504b1..e79f01be3c1946f863380444f35f651b031ef2a3 100644 (file)
@@ -125,9 +125,9 @@ layer at (0,0) size 785x1235
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 646960e22f1f43a61f84f82b105d84bb6614d2d6..23ef09882cc524f3be1d1ca1580433b167824d4f 100644 (file)
@@ -134,9 +134,9 @@ layer at (0,0) size 785x1293
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [bgcolor=#000000] [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [bgcolor=#000000] [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [bgcolor=#000000] [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 6745f9ddfad7c8e5372f7833666bb658064ec053..5faf8fa97279d6fc6fb987fdb8995d505c336296 100644 (file)
@@ -144,9 +144,9 @@ layer at (0,0) size 785x1366
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 8d3f23eb39725859bce8879c6e910a661db7ce9d..d431f50f23f28b6a89863c0dc30a67bc3e25d1aa 100644 (file)
@@ -146,9 +146,9 @@ layer at (0,0) size 785x1381
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index a20563f65cd75477972320144af5f49c698bc24a..7650645c6be74ca1dfa5ea3a1733c6999dae86cf 100644 (file)
@@ -133,9 +133,9 @@ layer at (0,0) size 785x1293
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 7f81d23f8fa5a1142afe1d8b814fa1257b0ec33b..e730ea5d7b91a16ffdaefaecb86b7474744fba0f 100644 (file)
@@ -144,9 +144,9 @@ layer at (0,0) size 785x1366
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114 [bgcolor=#000000]
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 25402934cd5367131ceb4d99f914ad3a7cd670d6..350fee3c4a4926d46632f55b83afcf9bb01af504 100644 (file)
@@ -142,9 +142,9 @@ layer at (0,0) size 785x1351
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index ca8c114ab681ad6643bb8cdeb5ce124883b96645..f3795264daffa7296f53ed52577a56f55e82df61 100644 (file)
@@ -132,9 +132,9 @@ layer at (0,0) size 785x1305
                 text run at (34,4) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,319) size 581x116
           RenderTableRow {TR} at (0,0) size 581x116
-            RenderTableCell {TD} at (0,44) size 344x27 [bgcolor=#000000] [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (4,2) size 47x22
-                text run at (4,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 344x33 [bgcolor=#000000] [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (4,8) size 47x22
+                text run at (4,8) width 47: "TD M"
             RenderTableCell {TD} at (344,44) size 123x27 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index a5fccd48bb186b163029ba4e6ffabe8502025be8..42e4cde8d8fdc97f5474124063f5f05cc5018306 100644 (file)
@@ -144,9 +144,9 @@ layer at (0,0) size 785x1477
                 text run at (36,3) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,318) size 584x115
           RenderTableRow {TR} at (0,0) size 584x115
-            RenderTableCell {TD} at (0,43) size 344x29 [border: (3px dashed #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (4,4) size 47x22
-                text run at (4,4) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 344x33 [border: (7px dashed #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (4,8) size 47x22
+                text run at (4,8) width 47: "TD M"
             RenderTableCell {TD} at (344,44) size 125x27 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (6,2) size 46x22
                 text run at (6,2) width 46: "TD O"
index 6e642a26825081d4d166cc8737e1460abae987cc..2586fd26b75881af775c644e4e213dc097438edb 100644 (file)
@@ -131,9 +131,9 @@ layer at (0,0) size 785x1316
                 text run at (38,3) width 45: "TH D"
         RenderTableSection {TFOOT} at (1,318) size 587x115
           RenderTableRow {TR} at (0,0) size 587x115
-            RenderTableCell {TD} at (0,43) size 470x29 [border: (3px dashed #FFFFFF)] [r=0 c=0 rs=1 cs=3]
-              RenderText {#text} at (4,4) size 47x22
-                text run at (4,4) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 470x33 [border: (7px dashed #FFFFFF)] [r=0 c=0 rs=1 cs=3]
+              RenderText {#text} at (4,8) size 47x22
+                text run at (4,8) width 47: "TD M"
             RenderTableCell {TD} at (470,44) size 117x26 [border: (1px dotted #FFFFFF)] [r=0 c=3 rs=1 cs=1]
               RenderText {#text} at (6,2) size 44x22
                 text run at (6,2) width 44: "TD P"
index 6efefe7859e027bcfd9e835e828afc28eb9ca380..22deaab44bae75349add38ab38408cebebee3ad6 100644 (file)
@@ -125,9 +125,9 @@ layer at (0,0) size 785x1249
                 text run at (34,4) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,319) size 581x116
           RenderTableRow {TR} at (0,0) size 581x116
-            RenderTableCell {TD} at (0,44) size 344x27 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (4,2) size 47x22
-                text run at (4,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 344x33 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (4,8) size 47x22
+                text run at (4,8) width 47: "TD M"
             RenderTableCell {TD} at (344,44) size 123x27 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index f593686966bbc78d588e8269f278b4f6ebf6c62d..b0b26ad90972429e7f0046a605b6784d082b4902 100644 (file)
@@ -125,9 +125,9 @@ layer at (0,0) size 785x1205
                 text run at (34,4) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,308) size 581x111
           RenderTableRow {TR} at (0,0) size 581x111
-            RenderTableCell {TD} at (0,42) size 344x27 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (4,2) size 47x22
-                text run at (4,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,39) size 344x33 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (4,8) size 47x22
+                text run at (4,8) width 47: "TD M"
             RenderTableCell {TD} at (344,42) size 123x27 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 2ea06197f194b98ccc1387a2c1526d53903638b3..7d562b3a35c9e8e1787824c6d8be93250336d85a 100644 (file)
@@ -140,9 +140,9 @@ layer at (0,0) size 785x1445
                 text run at (36,4) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,337) size 585x117
           RenderTableRow {TR} at (0,0) size 585x117
-            RenderTableCell {TD} at (0,44) size 344x28 [border: (3px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (3,4) size 47x22
-                text run at (3,4) width 47: "TD M"
+            RenderTableCell {TD} at (0,42) size 344x32 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (3,8) size 47x22
+                text run at (3,8) width 47: "TD M"
             RenderTableCell {TD} at (344,44) size 125x28 [border: (3px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,4) size 46x22
                 text run at (2,4) width 46: "TD O"
index 370b2b2a1942257fb6bf92dfde84e6ff6e0b7f32..26b00ffb5b9d1f21827743a1eadd2bac124fa917 100644 (file)
@@ -133,9 +133,9 @@ layer at (0,0) size 785x1362
                 text run at (36,4) width 45: "TH D"
         RenderTableSection {TFOOT} at (2,325) size 585x117
           RenderTableRow {TR} at (0,0) size 585x117
-            RenderTableCell {TD} at (0,44) size 344x28 [border: (3px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (3,4) size 47x22
-                text run at (3,4) width 47: "TD M"
+            RenderTableCell {TD} at (0,42) size 344x32 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (3,8) size 47x22
+                text run at (3,8) width 47: "TD M"
             RenderTableCell {TD} at (344,44) size 125x28 [border: (3px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,4) size 46x22
                 text run at (2,4) width 46: "TD O"
index e1aec3b2bba07ec7b61c943fe7a1ba87f3b37dfc..3526942bd7d8461fdf53d37d6392b93da6eec45d 100644 (file)
@@ -121,9 +121,9 @@ layer at (0,0) size 1544x1673
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #000000)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #000000)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #000000)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index d78089da93a38f5a99a9c1ae831860a7cf86b984..fd1830040e7733f2c0ee10bff4deefb8dea36a78 100644 (file)
@@ -127,9 +127,9 @@ layer at (0,0) size 785x1250
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 03853a045a9e7adb37d84c452b1e5bf5579cfa19..7b9bbf682af036e9c8ae88c7a7ace3b9a817931d 100644 (file)
@@ -204,9 +204,9 @@ layer at (0,0) size 785x1744
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index c80a79218dc612855a812721d723050a18890939..5ab72cff8fd81dbabd3e03444818b404a2e657ef 100644 (file)
@@ -132,9 +132,9 @@ layer at (0,0) size 785x1291
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [bgcolor=#000000] [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [bgcolor=#000000] [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 051068193e731ad222defe42c789db96641eba8b..15fa79e6796e6d128d5fd6a0d922c46fc21f0451 100644 (file)
@@ -139,9 +139,9 @@ layer at (0,0) size 785x1394
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 4e87063df61b58cfda44eda4507a256dc843d726..87be7e40d5c0213065bf6096906a8875807aa14f 100644 (file)
@@ -130,9 +130,9 @@ layer at (0,0) size 785x1293
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 465x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=3]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 465x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=3]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (465,44) size 112x25 [border: (1px dotted #FFFFFF)] [r=0 c=3 rs=1 cs=1]
               RenderText {#text} at (2,2) size 44x22
                 text run at (2,2) width 44: "TD P"
index 6464d110b033bea84252d928aa8dce9216e4c26b..471a6b60241a0cd3e04822e9887d09334c14115c 100644 (file)
@@ -146,9 +146,9 @@ layer at (0,0) size 785x1394
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 9a8a2b9c03cdd0ab51b0cc11db960e04561303a3..d253f712f87589d9ae18f09f90fc3ea2aae963bb 100644 (file)
@@ -130,9 +130,9 @@ layer at (0,0) size 785x1293
                 text run at (34,2) width 45: "TH D"
         RenderTableSection {TFOOT} at (0,317) size 577x114
           RenderTableRow {TR} at (0,0) size 577x114
-            RenderTableCell {TD} at (0,44) size 342x25 [border: (1px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
-              RenderText {#text} at (2,2) size 47x22
-                text run at (2,2) width 47: "TD M"
+            RenderTableCell {TD} at (0,41) size 342x31 [border: (7px dotted #FFFFFF)] [r=0 c=0 rs=1 cs=2]
+              RenderText {#text} at (2,8) size 47x22
+                text run at (2,8) width 47: "TD M"
             RenderTableCell {TD} at (342,44) size 123x25 [border: (1px dotted #FFFFFF)] [r=0 c=2 rs=1 cs=1]
               RenderText {#text} at (2,2) size 46x22
                 text run at (2,2) width 46: "TD O"
index 1776189fd5bb47dc9b919992f646e4cb0560d7b9..d5782164c6904566d6683cd4099d2b385ba282f8 100644 (file)
@@ -195,7 +195,7 @@ layer at (0,0) size 785x2416
       RenderBlock (anonymous) at (0,776) size 769x18
         RenderBR {BR} at (0,0) size 0x18
       RenderTable {TABLE} at (0,794) size 190x410
-        RenderBlock {CAPTION} at (0,0) size 190x18
+        RenderBlock {CAPTION} at (0,392) size 190x18
           RenderText {#text} at (2,0) size 186x18
             text run at (2,0) width 186: "Table 5 has a scrolling tbody."
         RenderTableSection {THEAD} at (0,0) size 190x19
@@ -417,7 +417,7 @@ layer at (0,0) size 785x2416
             RenderTableCell {TD} at (2,2) size 92x15 [r=0 c=0 rs=1 cs=2]
               RenderText {#text} at (1,1) size 47x13
                 text run at (1,1) width 47: "FOOTER"
-        RenderBlock {CAPTION} at (0,392) size 190x18
+        RenderBlock {CAPTION} at (0,0) size 190x18
           RenderText {#text} at (2,0) size 186x18
             text run at (2,0) width 186: "Table 5 has a scrolling tbody."
       RenderTable at (0,1204) size 204x18
index aa439efb2aa0ca55e37b04dc28110d9858d04441..2b18807d9c9160a5cf32b5e0791072a44f5eb914 100644 (file)
@@ -1,3 +1,28 @@
+2007-01-11  Mitz Pettel  <mitz@webkit.org>
+
+        Reviewed by Hyatt.
+
+        - fix http://bugs.webkit.org/show_bug.cgi?id=12124
+          RenderTable::section{Above,Below}() can return the wrong answer for the {footer,header}
+
+        * rendering/RenderTable.cpp:
+        (WebCore::resetSectionPointerIfNotBefore): Added this function to help with
+        checking if a section being inserted is the going to be the first of its kind.
+        (WebCore::RenderTable::addChild): Changed to maintain the pointers to the
+        header, the footer, the caption and the first table body properly when objects
+        are inserted in the middle. Also changed to make the first caption win over
+        any other captions. This matches Firefox and what already used to happen when a
+        section recalc took place.
+        (WebCore::RenderTable::layout): Changed to use sectionBelow() for iterating
+        over the sections from top to bottom.
+        (WebCore::RenderTable::calcBorderLeft): Changed to really find the section
+        containing the first row.
+        (WebCore::RenderTable::calcBorderRight): Ditto.
+        (WebCore::RenderTable::sectionAbove): Fixed a bug when the last section was
+        skipped if the input was the footer.
+        (WebCore::RenderTable::sectionBelow): Ditto for "first" and "header"
+        respectively.
+
 2007-01-11  Mitz Pettel  <mitz@webkit.org>
 
         Reviewed by Hyatt.
index c325c1aaa58f0b0528677455f37f2a41f97b1115..40ac3463978eb6a41f1dd4ce526ae6075950f0f1 100644 (file)
@@ -93,6 +93,17 @@ void RenderTable::setStyle(RenderStyle* newStyle)
     }
 }
 
+static inline void resetSectionPointerIfNotBefore(RenderTableSection*& ptr, RenderObject* before)
+{
+    if (!before || !ptr)
+        return;
+    RenderObject* o = before->previousSibling();
+    while (o && o != ptr)
+        o = o->previousSibling();
+    if (!o)
+        ptr = 0;
+}
+
 void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild)
 {
     bool wrapInAnonymousSection = true;
@@ -100,8 +111,18 @@ void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild)
 
     switch (child->style()->display()) {
         case TABLE_CAPTION:
-            if (child->isRenderBlock())
-                m_caption = static_cast<RenderBlock*>(child);
+            if (child->isRenderBlock()) {
+                // First caption wins.
+                if (beforeChild && m_caption) {
+                    RenderObject* o = beforeChild->previousSibling();
+                    while (o && o != m_caption)
+                        o = o->previousSibling();
+                    if (!o)
+                        m_caption = 0;
+                }
+                if (!m_caption)
+                    m_caption = static_cast<RenderBlock*>(child);
+            }
             wrapInAnonymousSection = false;
             break;
         case TABLE_COLUMN:
@@ -110,27 +131,34 @@ void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild)
             wrapInAnonymousSection = false;
             break;
         case TABLE_HEADER_GROUP:
-            if (!m_head) {
-                if (child->isTableSection())
+            if (child->isTableSection()) {
+                resetSectionPointerIfNotBefore(m_head, beforeChild);
+                if (!m_head) {
                     m_head = static_cast<RenderTableSection*>(child);
-            } else if (!m_firstBody) {
-                if (child->isTableSection())
-                    m_firstBody = static_cast<RenderTableSection*>(child);
+                } else {
+                    resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
+                    if (!m_firstBody) 
+                        m_firstBody = static_cast<RenderTableSection*>(child);
+                }
             }
             wrapInAnonymousSection = false;
             break;
         case TABLE_FOOTER_GROUP:
-            if (!m_foot) {
-                if (child->isTableSection())
+            if (child->isTableSection()) {
+                resetSectionPointerIfNotBefore(m_foot, beforeChild);
+                if (!m_foot) {
                     m_foot = static_cast<RenderTableSection*>(child);
-                wrapInAnonymousSection = false;
-                break;
+                    wrapInAnonymousSection = false;
+                    break;
+                }
             }
-            // fall through
+            // Fall through.
         case TABLE_ROW_GROUP:
-            if (!m_firstBody)
-                if (child->isTableSection())
+            if (child->isTableSection()) {
+                resetSectionPointerIfNotBefore(m_firstBody, beforeChild);
+                if (!m_firstBody)
                     m_firstBody = static_cast<RenderTableSection*>(child);
+            }
             wrapInAnonymousSection = false;
             break;
         case TABLE_CELL:
@@ -354,7 +382,7 @@ void RenderTable::layout()
         bl += paddingLeft();
 
     // position the table sections
-    RenderObject* section = m_head ? m_head : (m_firstBody ? m_firstBody : m_foot);
+    RenderTableSection* section = m_head ? m_head : (m_firstBody ? m_firstBody : m_foot);
     while (section) {
         if (!sectionMoved && section->yPos() != m_height) {
             sectionMoved = true;
@@ -365,19 +393,7 @@ void RenderTable::layout()
         m_height += section->height();
         m_overflowLeft = min(m_overflowLeft, section->xPos() + section->overflowLeft(false));
         m_overflowWidth = max(m_overflowWidth, section->xPos() + section->overflowWidth(false));
-        // FIXME: Use sectionBelow() instead of the following once sectionBelow() is fixed.
-        // See http://bugs.webkit.org/show_bug.cgi?id=12124
-        if (section == m_foot)
-            break;
-        if (section == m_head)
-            section = m_firstBody ? m_firstBody : m_foot;
-        else {
-            do {
-                section = section->nextSibling();
-            } while (section && (section == m_head || section == m_foot || !section->isTableSection()));
-            if (!section)
-                section = m_foot;
-        }
+        section = sectionBelow(section);
     }
 
     m_height += bpBottom;
@@ -694,27 +710,25 @@ int RenderTable::calcBorderLeft() const
                 borderWidth = max(borderWidth, gb.width);
         }
         
-        RenderObject* child = firstChild();
-        while (child && !child->isTableSection())
-            child = child->nextSibling();
-        if (child && child->isTableSection()) {
-            RenderTableSection* section = static_cast<RenderTableSection*>(child);
-            
-            if (!section->numRows())
-                return borderWidth / 2;
-            
-            const BorderValue& sb = section->style()->borderLeft();
+        RenderTableSection* firstNonEmptySection = m_head ? m_head : (m_firstBody ? m_firstBody : m_foot);
+        if (firstNonEmptySection && !firstNonEmptySection->numRows())
+            firstNonEmptySection = sectionBelow(firstNonEmptySection, true);
+        
+        if (firstNonEmptySection) {
+            const BorderValue& sb = firstNonEmptySection->style()->borderLeft();
             if (sb.style() == BHIDDEN)
                 return 0;
+
             if (sb.style() > BHIDDEN)
                 borderWidth = max(borderWidth, sb.width);
 
-            const RenderTableSection::CellStruct& cs = section->cellAt(0, leftmostColumn);
+            const RenderTableSection::CellStruct& cs = firstNonEmptySection->cellAt(0, leftmostColumn);
             
             if (cs.cell) {
                 const BorderValue& cb = cs.cell->style()->borderLeft();
                 if (cb.style() == BHIDDEN)
                     return 0;
+
                 const BorderValue& rb = cs.cell->parent()->style()->borderLeft();
                 if (rb.style() == BHIDDEN)
                     return 0;
@@ -755,27 +769,25 @@ int RenderTable::calcBorderRight() const
                 borderWidth = max(borderWidth, gb.width);
         }
         
-        RenderObject* child = firstChild();
-        while (child && !child->isTableSection())
-            child = child->nextSibling();
-        if (child && child->isTableSection()) {
-            RenderTableSection* section = static_cast<RenderTableSection*>(child);
-            
-            if (!section->numRows())
-                return (borderWidth + 1) / 2;
-            
-            const BorderValue& sb = section->style()->borderRight();
+        RenderTableSection* firstNonEmptySection = m_head ? m_head : (m_firstBody ? m_firstBody : m_foot);
+        if (firstNonEmptySection && !firstNonEmptySection->numRows())
+            firstNonEmptySection = sectionBelow(firstNonEmptySection, true);
+        
+        if (firstNonEmptySection) {
+            const BorderValue& sb = firstNonEmptySection->style()->borderRight();
             if (sb.style() == BHIDDEN)
                 return 0;
+
             if (sb.style() > BHIDDEN)
                 borderWidth = max(borderWidth, sb.width);
 
-            const RenderTableSection::CellStruct& cs = section->cellAt(0, rightmostColumn);
+            const RenderTableSection::CellStruct& cs = firstNonEmptySection->cellAt(0, rightmostColumn);
             
             if (cs.cell) {
                 const BorderValue& cb = cs.cell->style()->borderRight();
                 if (cb.style() == BHIDDEN)
                     return 0;
+
                 const BorderValue& rb = cs.cell->parent()->style()->borderRight();
                 if (rb.style() == BHIDDEN)
                     return 0;
@@ -929,7 +941,7 @@ RenderTableSection* RenderTable::sectionAbove(const RenderTableSection* section,
 {
     if (section == m_head)
         return 0;
-    RenderObject* prevSection = (section == m_foot ? lastChild() : section)->previousSibling();
+    RenderObject* prevSection = section == m_foot ? lastChild() : section->previousSibling();
     while (prevSection) {
         if (prevSection->isTableSection() && prevSection != m_head && prevSection != m_foot && (!skipEmptySections || static_cast<RenderTableSection*>(prevSection)->numRows()))
             break;
@@ -944,7 +956,7 @@ RenderTableSection* RenderTable::sectionBelow(const RenderTableSection* section,
 {
     if (section == m_foot)
         return 0;
-    RenderObject* nextSection = (section == m_head ? firstChild() : section)->nextSibling();
+    RenderObject* nextSection = section == m_head ? firstChild() : section->nextSibling();
     while (nextSection) {
         if (nextSection->isTableSection() && nextSection != m_head && nextSection != m_foot && (!skipEmptySections || static_cast<RenderTableSection*>(nextSection)->numRows()))
             break;