LayoutTests:
authorantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Apr 2007 11:32:29 +0000 (11:32 +0000)
committerantti <antti@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Apr 2007 11:32:29 +0000 (11:32 +0000)
        Reviewed by Darin, Hyatt.

        Test for http://bugs.webkit.org/show_bug.cgi?id=13081
        Empty table cells not handled correctly
        <rdar://problem/5067926>

        Added test case and checked in updated results for others. Changes represent
        progressions or are not visible in rendering output.

        * fast/block/positioning/negative-right-pos-expected.txt:
        * fast/css/acid2-expected.txt:
        * fast/css/acid2-pixel-expected.txt:
        * fast/css/percentage-non-integer-expected.checksum:
        * fast/css/percentage-non-integer-expected.png:
        * fast/css/percentage-non-integer-expected.txt:
        * fast/repaint/table-cell-move-expected.checksum:
        * fast/repaint/table-cell-move-expected.png:
        * fast/repaint/table-cell-move-expected.txt:
        * fast/table/012-expected.txt:
        * fast/table/032-expected.txt:
        * fast/table/empty-cells-expected.checksum: Added.
        * fast/table/empty-cells-expected.txt: Added.
        * fast/table/empty-cells.html: Added.
        * fast/table/empty-section-crash-expected.txt:
        * http/tests/misc/acid2-expected.txt:
        * http/tests/misc/acid2-pixel-expected.txt:
        * tables/mozilla/bugs/bug100334-expected.txt:
        * tables/mozilla/bugs/bug1188-expected.txt:
        * tables/mozilla/bugs/bug16012-expected.checksum:
        * tables/mozilla/bugs/bug16012-expected.png:
        * tables/mozilla/bugs/bug16012-expected.txt:
        * tables/mozilla/bugs/bug1818-6-expected.txt:
        * tables/mozilla/bugs/bug222336-expected.txt:
        * tables/mozilla/bugs/bug222467-expected.txt:
        * tables/mozilla/bugs/bug78162-expected.txt:
        * tables/mozilla/core/misc-expected.checksum:
        * tables/mozilla/core/misc-expected.png:
        * tables/mozilla/core/misc-expected.txt:
        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.checksum:
        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.png:
        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.txt:
        * tables/mozilla_expected_failures/bugs/bug72393-expected.checksum:
        * tables/mozilla_expected_failures/bugs/bug72393-expected.png:
        * tables/mozilla_expected_failures/bugs/bug72393-expected.txt:
        * tables/mozilla_expected_failures/other/empty_cells-expected.txt:

WebCore:

        Reviewed by Darin, Hyatt.

        Fix http://bugs.webkit.org/show_bug.cgi?id=13081
        Empty table cells not handled correctly
        <rdar://problem/5067926>

        To match Firefox and IE, empty table cells with variable width need to be
        treated as special case. They generally get zero width.

        * rendering/AutoTableLayout.cpp:
        (WebCore::AutoTableLayout::recalcColumn):
        (WebCore::AutoTableLayout::calcEffectiveWidth):
        (WebCore::AutoTableLayout::layout):
        * rendering/AutoTableLayout.h:
        (WebCore::AutoTableLayout::Layout::Layout):
        * rendering/RenderStyle.h:
        (WebCore::RenderStyle::hasPadding):

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

41 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/block/positioning/negative-right-pos-expected.txt
LayoutTests/fast/css/acid2-expected.txt
LayoutTests/fast/css/acid2-pixel-expected.txt
LayoutTests/fast/css/percentage-non-integer-expected.checksum
LayoutTests/fast/css/percentage-non-integer-expected.png
LayoutTests/fast/css/percentage-non-integer-expected.txt
LayoutTests/fast/repaint/table-cell-move-expected.checksum
LayoutTests/fast/repaint/table-cell-move-expected.png
LayoutTests/fast/repaint/table-cell-move-expected.txt
LayoutTests/fast/table/012-expected.txt
LayoutTests/fast/table/032-expected.txt
LayoutTests/fast/table/empty-cells-expected.checksum [new file with mode: 0644]
LayoutTests/fast/table/empty-cells-expected.txt [new file with mode: 0644]
LayoutTests/fast/table/empty-cells.html [new file with mode: 0644]
LayoutTests/fast/table/empty-section-crash-expected.txt
LayoutTests/http/tests/misc/acid2-expected.txt
LayoutTests/http/tests/misc/acid2-pixel-expected.txt
LayoutTests/tables/mozilla/bugs/bug100334-expected.txt
LayoutTests/tables/mozilla/bugs/bug1188-expected.txt
LayoutTests/tables/mozilla/bugs/bug16012-expected.checksum
LayoutTests/tables/mozilla/bugs/bug16012-expected.png
LayoutTests/tables/mozilla/bugs/bug16012-expected.txt
LayoutTests/tables/mozilla/bugs/bug1818-6-expected.txt
LayoutTests/tables/mozilla/bugs/bug222336-expected.txt
LayoutTests/tables/mozilla/bugs/bug222467-expected.txt
LayoutTests/tables/mozilla/bugs/bug78162-expected.txt
LayoutTests/tables/mozilla/core/misc-expected.checksum
LayoutTests/tables/mozilla/core/misc-expected.png
LayoutTests/tables/mozilla/core/misc-expected.txt
LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-1-expected.checksum
LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png
LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-1-expected.txt
LayoutTests/tables/mozilla_expected_failures/bugs/bug72393-expected.checksum
LayoutTests/tables/mozilla_expected_failures/bugs/bug72393-expected.png
LayoutTests/tables/mozilla_expected_failures/bugs/bug72393-expected.txt
LayoutTests/tables/mozilla_expected_failures/other/empty_cells-expected.txt
WebCore/ChangeLog
WebCore/rendering/AutoTableLayout.cpp
WebCore/rendering/AutoTableLayout.h
WebCore/rendering/RenderStyle.h

index 6850f0d..d82af8e 100644 (file)
@@ -1,3 +1,51 @@
+2007-04-27  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Darin, Hyatt.
+        
+        Test for http://bugs.webkit.org/show_bug.cgi?id=13081
+        Empty table cells not handled correctly
+        <rdar://problem/5067926>
+        
+        Added test case and checked in updated results for others. Changes represent
+        progressions or are not visible in rendering output.
+
+        * fast/block/positioning/negative-right-pos-expected.txt:
+        * fast/css/acid2-expected.txt:
+        * fast/css/acid2-pixel-expected.txt:
+        * fast/css/percentage-non-integer-expected.checksum:
+        * fast/css/percentage-non-integer-expected.png:
+        * fast/css/percentage-non-integer-expected.txt:
+        * fast/repaint/table-cell-move-expected.checksum:
+        * fast/repaint/table-cell-move-expected.png:
+        * fast/repaint/table-cell-move-expected.txt:
+        * fast/table/012-expected.txt:
+        * fast/table/032-expected.txt:
+        * fast/table/empty-cells-expected.checksum: Added.
+        * fast/table/empty-cells-expected.txt: Added.
+        * fast/table/empty-cells.html: Added.
+        * fast/table/empty-section-crash-expected.txt:
+        * http/tests/misc/acid2-expected.txt:
+        * http/tests/misc/acid2-pixel-expected.txt:
+        * tables/mozilla/bugs/bug100334-expected.txt:
+        * tables/mozilla/bugs/bug1188-expected.txt:
+        * tables/mozilla/bugs/bug16012-expected.checksum:
+        * tables/mozilla/bugs/bug16012-expected.png:
+        * tables/mozilla/bugs/bug16012-expected.txt:
+        * tables/mozilla/bugs/bug1818-6-expected.txt:
+        * tables/mozilla/bugs/bug222336-expected.txt:
+        * tables/mozilla/bugs/bug222467-expected.txt:
+        * tables/mozilla/bugs/bug78162-expected.txt:
+        * tables/mozilla/core/misc-expected.checksum:
+        * tables/mozilla/core/misc-expected.png:
+        * tables/mozilla/core/misc-expected.txt:
+        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.checksum:
+        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.png:
+        * tables/mozilla_expected_failures/bugs/bug14007-1-expected.txt:
+        * tables/mozilla_expected_failures/bugs/bug72393-expected.checksum:
+        * tables/mozilla_expected_failures/bugs/bug72393-expected.png:
+        * tables/mozilla_expected_failures/bugs/bug72393-expected.txt:
+        * tables/mozilla_expected_failures/other/empty_cells-expected.txt:
+
 2007-04-27  Rob Buis  <buis@kde.org>
 
         Reviewed by Oliver.
index 0cb9bfc..7da9a19 100644 (file)
@@ -11,6 +11,6 @@ layer at (8,26) size 300x400
     RenderTable {TABLE} at (0,0) size 250x400 [bgcolor=#008000]
       RenderTableSection {TBODY} at (0,0) size 250x400
         RenderTableRow {TR} at (0,0) size 250x400
-          RenderTableCell {TD} at (0,200) size 250x0 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (0,200) size 0x0 [r=0 c=0 rs=1 cs=1]
 layer at (258,26) size 200x400
   RenderBlock (positioned) {DIV} at (250,0) size 200x400 [bgcolor=#008000]
index dac58a9..ca2b3b6 100644 (file)
@@ -11,7 +11,7 @@ layer at (36,2638) size 764x226
     RenderTable {TABLE} at (12,12) size 1x0
       RenderTableSection {TBODY} at (0,0) size 1x0
         RenderTableRow {TR} at (0,0) size 1x0
-          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
     RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
       RenderBlock {DIV} at (12,0) size 144x12
         RenderText {#text} at (0,-1) size 90x14
index 88edf1a..406776f 100644 (file)
@@ -11,7 +11,7 @@ layer at (36,72) size 764x226
     RenderTable {TABLE} at (12,12) size 1x0
       RenderTableSection {TBODY} at (0,0) size 1x0
         RenderTableRow {TR} at (0,0) size 1x0
-          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
     RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
       RenderBlock {DIV} at (12,0) size 144x12
         RenderText {#text} at (0,-1) size 90x14
index 2273e61..0960540 100644 (file)
@@ -1 +1 @@
-894253a73fdcd593dbb354e032c879ed
\ No newline at end of file
+9dbc92dfac04c2ab684eae0db5e59865
\ No newline at end of file
index 5ae1c7e..814c747 100644 (file)
Binary files a/LayoutTests/fast/css/percentage-non-integer-expected.png and b/LayoutTests/fast/css/percentage-non-integer-expected.png differ
index c5ca38a..5e06202 100644 (file)
@@ -78,29 +78,29 @@ layer at (8,126) size 293x10
         RenderTableCell {TD} at (215,5) size 10x0 [bgcolor=#000000] [r=0 c=15 rs=1 cs=1]
         RenderTableCell {TD} at (225,5) size 27x0 [bgcolor=#00FF00] [r=0 c=16 rs=1 cs=1]
         RenderTableCell {TD} at (252,5) size 10x0 [bgcolor=#000000] [r=0 c=17 rs=1 cs=1]
-        RenderTableCell {TD} at (262,5) size 30x0 [bgcolor=#00FF00] [r=0 c=18 rs=1 cs=1]
-        RenderTableCell {TD} at (292,5) size 1x0 [r=0 c=19 rs=1 cs=1]
+        RenderTableCell {TD} at (262,5) size 31x0 [bgcolor=#00FF00] [r=0 c=18 rs=1 cs=1]
+        RenderTableCell {TD} at (293,5) size 0x0 [r=0 c=19 rs=1 cs=1]
 layer at (8,126) size 1000x10
   RenderTable {TABLE} at (0,0) size 1000x10
     RenderTableSection {TBODY} at (0,0) size 1000x10
       RenderTableRow {TR} at (0,0) size 1000x10
         RenderTableCell {TD} at (0,5) size 11x0 [bgcolor=#0000007F] [r=0 c=0 rs=1 cs=1]
-        RenderTableCell {TD} at (11,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=1 rs=1 cs=1]
-        RenderTableCell {TD} at (21,5) size 13x0 [bgcolor=#0000007F] [r=0 c=2 rs=1 cs=1]
-        RenderTableCell {TD} at (34,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=3 rs=1 cs=1]
-        RenderTableCell {TD} at (44,5) size 15x0 [bgcolor=#0000007F] [r=0 c=4 rs=1 cs=1]
-        RenderTableCell {TD} at (59,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=5 rs=1 cs=1]
-        RenderTableCell {TD} at (69,5) size 17x0 [bgcolor=#0000007F] [r=0 c=6 rs=1 cs=1]
-        RenderTableCell {TD} at (86,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=7 rs=1 cs=1]
-        RenderTableCell {TD} at (96,5) size 20x0 [bgcolor=#0000007F] [r=0 c=8 rs=1 cs=1]
-        RenderTableCell {TD} at (116,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=9 rs=1 cs=1]
-        RenderTableCell {TD} at (126,5) size 21x0 [bgcolor=#0000007F] [r=0 c=10 rs=1 cs=1]
-        RenderTableCell {TD} at (147,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=11 rs=1 cs=1]
-        RenderTableCell {TD} at (157,5) size 23x0 [bgcolor=#0000007F] [r=0 c=12 rs=1 cs=1]
-        RenderTableCell {TD} at (180,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=13 rs=1 cs=1]
-        RenderTableCell {TD} at (190,5) size 25x0 [bgcolor=#0000007F] [r=0 c=14 rs=1 cs=1]
-        RenderTableCell {TD} at (215,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=15 rs=1 cs=1]
-        RenderTableCell {TD} at (225,5) size 27x0 [bgcolor=#0000007F] [r=0 c=16 rs=1 cs=1]
-        RenderTableCell {TD} at (252,5) size 10x0 [bgcolor=#00FF007F] [r=0 c=17 rs=1 cs=1]
-        RenderTableCell {TD} at (262,5) size 30x0 [bgcolor=#0000007F] [r=0 c=18 rs=1 cs=1]
-        RenderTableCell {TD} at (292,5) size 708x0 [r=0 c=19 rs=1 cs=1]
+        RenderTableCell {TD} at (11,5) size 88x0 [bgcolor=#00FF007F] [r=0 c=1 rs=1 cs=1]
+        RenderTableCell {TD} at (99,5) size 13x0 [bgcolor=#0000007F] [r=0 c=2 rs=1 cs=1]
+        RenderTableCell {TD} at (112,5) size 88x0 [bgcolor=#00FF007F] [r=0 c=3 rs=1 cs=1]
+        RenderTableCell {TD} at (200,5) size 15x0 [bgcolor=#0000007F] [r=0 c=4 rs=1 cs=1]
+        RenderTableCell {TD} at (215,5) size 88x0 [bgcolor=#00FF007F] [r=0 c=5 rs=1 cs=1]
+        RenderTableCell {TD} at (303,5) size 17x0 [bgcolor=#0000007F] [r=0 c=6 rs=1 cs=1]
+        RenderTableCell {TD} at (320,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=7 rs=1 cs=1]
+        RenderTableCell {TD} at (409,5) size 20x0 [bgcolor=#0000007F] [r=0 c=8 rs=1 cs=1]
+        RenderTableCell {TD} at (429,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=9 rs=1 cs=1]
+        RenderTableCell {TD} at (518,5) size 21x0 [bgcolor=#0000007F] [r=0 c=10 rs=1 cs=1]
+        RenderTableCell {TD} at (539,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=11 rs=1 cs=1]
+        RenderTableCell {TD} at (628,5) size 23x0 [bgcolor=#0000007F] [r=0 c=12 rs=1 cs=1]
+        RenderTableCell {TD} at (651,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=13 rs=1 cs=1]
+        RenderTableCell {TD} at (740,5) size 25x0 [bgcolor=#0000007F] [r=0 c=14 rs=1 cs=1]
+        RenderTableCell {TD} at (765,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=15 rs=1 cs=1]
+        RenderTableCell {TD} at (854,5) size 27x0 [bgcolor=#0000007F] [r=0 c=16 rs=1 cs=1]
+        RenderTableCell {TD} at (881,5) size 89x0 [bgcolor=#00FF007F] [r=0 c=17 rs=1 cs=1]
+        RenderTableCell {TD} at (970,5) size 30x0 [bgcolor=#0000007F] [r=0 c=18 rs=1 cs=1]
+        RenderTableCell {TD} at (1000,5) size 0x0 [r=0 c=19 rs=1 cs=1]
index 104fbf2..e4688f8 100644 (file)
@@ -1 +1 @@
-2baa577b2d2a75add31a3eb65fa02386
\ No newline at end of file
+d6c72ac0e759cd75484ed8417b485d19
\ No newline at end of file
index 0b68738..75173e1 100644 (file)
Binary files a/LayoutTests/fast/repaint/table-cell-move-expected.png and b/LayoutTests/fast/repaint/table-cell-move-expected.png differ
index e1e70e4..c70bd3a 100644 (file)
@@ -32,12 +32,12 @@ layer at (0,0) size 800x388
       RenderTable {TABLE} at (0,124) size 61x240
         RenderTableSection {TBODY} at (0,0) size 61x240
           RenderTableRow {TR} at (0,0) size 61x60
-            RenderTableCell {TD} at (0,30) size 60x0 [r=0 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (60,30) size 1x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (0,30) size 61x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (61,30) size 0x0 [r=0 c=1 rs=1 cs=1]
           RenderTableRow {TR} at (0,60) size 61x180
-            RenderTableCell {TD} at (0,120) size 60x60 [r=1 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 60x60 [bgcolor=#008000]
-            RenderTableCell {TD} at (60,150) size 1x0 [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (0,120) size 61x60 [r=1 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (0,0) size 61x60 [bgcolor=#008000]
+            RenderTableCell {TD} at (61,150) size 0x0 [r=1 c=1 rs=1 cs=1]
           RenderTableRow {TR} at (0,240) size 61x0
-            RenderTableCell {TD} at (0,240) size 60x0 [bgcolor=#FF0000] [r=2 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (60,240) size 1x0 [r=2 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (0,240) size 61x0 [bgcolor=#FF0000] [r=2 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (61,240) size 0x0 [r=2 c=1 rs=1 cs=1]
index 458f3d7..8b92a49 100644 (file)
@@ -9,7 +9,7 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,18) size 784x100
         RenderTableSection {TBODY} at (0,0) size 784x100
           RenderTableRow {TR} at (0,0) size 784x100
-            RenderTableCell {TD} at (0,50) size 784x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,50) size 0x0 [r=0 c=0 rs=1 cs=1]
       RenderBlock (anonymous) at (0,118) size 784x18
         RenderText {#text} at (0,0) size 321x18
           text run at (0,0) width 321: "This text is 100 pixels lower than the previous line."
index fe945f4..df152c2 100644 (file)
@@ -14,10 +14,10 @@ layer at (8,50) size 100x50
       RenderTable {TABLE} at (0,0) size 100x6
         RenderTableSection {TBODY} at (0,0) size 100x6
           RenderTableRow {TR} at (0,2) size 100x2
-            RenderTableCell {TD} at (2,2) size 96x2 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
 layer at (8,100) size 100x50
   RenderBlock (positioned) {DIV} at (0,50) size 100x50 [bgcolor=#008000]
     RenderTable {TABLE} at (0,0) size 100x6
       RenderTableSection {TBODY} at (0,0) size 100x6
         RenderTableRow {TR} at (0,2) size 100x2
-          RenderTableCell {TD} at (2,2) size 96x2 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
diff --git a/LayoutTests/fast/table/empty-cells-expected.checksum b/LayoutTests/fast/table/empty-cells-expected.checksum
new file mode 100644 (file)
index 0000000..c8b53e5
--- /dev/null
@@ -0,0 +1 @@
+841f4e6787c119184ba04190780f8f57
\ No newline at end of file
diff --git a/LayoutTests/fast/table/empty-cells-expected.txt b/LayoutTests/fast/table/empty-cells-expected.txt
new file mode 100644 (file)
index 0000000..86caed0
--- /dev/null
@@ -0,0 +1,188 @@
+layer at (0,0) size 785x723
+  RenderView at (0,0) size 785x600
+layer at (0,0) size 785x723
+  RenderBlock {HTML} at (0,0) size 785x723
+    RenderBody {BODY} at (0,0) size 785x723
+      RenderTable {TABLE} at (0,0) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 220x18
+                text run at (0,0) width 220: "First cell empty, second auto width"
+      RenderTable {TABLE} at (0,29) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 239x18
+                text run at (0,0) width 239: "First cell empty, second percent width"
+      RenderTable {TABLE} at (0,58) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 225x18
+                text run at (0,0) width 225: "First cell empty, second fixed width"
+      RenderTable {TABLE} at (0,87) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,3) size 391x18 [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 4x18
+                text run at (0,0) width 4: " "
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 333x18
+                text run at (0,0) width 333: "First cell empty (with space) and has white-space:pre"
+      RenderTable {TABLE} at (0,116) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 321x18
+                text run at (0,0) width 321: "First cell empty (no space) and has white-space:pre"
+      RenderTable {TABLE} at (0,145) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,10) size 391x4 [border: (2px solid #008000)] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 191x18
+                text run at (0,0) width 191: "First cell empty but has border"
+      RenderTable {TABLE} at (0,174) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,10) size 391x4 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 201x18
+                text run at (0,0) width 201: "First cell empty but has padding"
+      RenderTable {TABLE} at (0,203) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 194x18
+                text run at (0,0) width 194: "First cell empty but has margin"
+      RenderTable {TABLE} at (0,232) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [bgcolor=#FFFF00] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 261x18
+                text run at (0,0) width 261: "First cell empty but has background color"
+      RenderTable {TABLE} at (0,261) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 391x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 158x18
+                text run at (0,0) width 158: "First row, first cell empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,28) size 391x18 [r=1 c=0 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 23x18
+                text run at (0,0) width 23: "text"
+            RenderTableCell {TD} at (391,28) size 390x18 [bgcolor=#FF0000] [r=1 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 201x18
+                text run at (0,0) width 201: "Second row, first cell not empty"
+      RenderTable {TABLE} at (0,315) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 781x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 158x18
+                text run at (0,0) width 158: "First row, first cell empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,37) size 0x0 [r=1 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,28) size 781x18 [bgcolor=#FF0000] [r=1 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 177x18
+                text run at (0,0) width 177: "Second row, first cell empty"
+      RenderTable {TABLE} at (0,369) size 785x29 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x25
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 391x0 [r=0 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 178x18
+                text run at (0,0) width 178: "First cell empty, has colspan"
+      RenderTable {TABLE} at (0,398) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,3) size 391x18 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 23x18
+                text run at (0,0) width 23: "text"
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 308x18
+                text run at (0,0) width 308: "First row, first cell empty, second cell non-empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,37) size 391x0 [r=1 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,28) size 390x18 [bgcolor=#FF0000] [r=1 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 278x18
+                text run at (0,0) width 278: "Second row, first cell empty with colspan=2"
+      RenderTable {TABLE} at (0,452) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,3) size 391x18 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 23x18
+                text run at (0,0) width 23: "text"
+            RenderTableCell {TD} at (391,12) size 0x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 308x18
+                text run at (0,0) width 308: "First row, first cell non-empty, second cell empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,37) size 391x0 [r=1 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,28) size 390x18 [bgcolor=#FF0000] [r=1 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 278x18
+                text run at (0,0) width 278: "Second row, first cell empty with colspan=2"
+      RenderTable {TABLE} at (0,506) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 195x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (195,12) size 196x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 233x18
+                text run at (0,0) width 233: "First row, first and second cell empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,37) size 391x0 [r=1 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,28) size 390x18 [bgcolor=#FF0000] [r=1 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 275x18
+                text run at (0,0) width 275: "Second row, first cell empty, has colspan=2"
+      RenderTable {TABLE} at (0,560) size 785x65 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x61
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 196x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (196,12) size 195x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 233x18
+                text run at (0,0) width 233: "First row, first and second cell empty"
+          RenderTableRow {TR} at (0,25) size 781x36
+            RenderTableCell {TD} at (0,43) size 391x0 [r=1 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,25) size 390x36 [bgcolor=#FF0000] [r=1 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 352x36
+                text run at (0,0) width 352: "Second row, first cell empty, has colspan=2 and percent"
+                text run at (0,18) width 36: "width"
+      RenderTable {TABLE} at (0,625) size 785x54 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x50
+          RenderTableRow {TR} at (0,0) size 781x25
+            RenderTableCell {TD} at (0,12) size 195x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (195,12) size 196x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (391,3) size 390x18 [bgcolor=#FF0000] [r=0 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 233x18
+                text run at (0,0) width 233: "First row, first and second cell empty"
+          RenderTableRow {TR} at (0,25) size 781x25
+            RenderTableCell {TD} at (0,37) size 391x0 [r=1 c=0 rs=1 cs=2]
+            RenderTableCell {TD} at (391,28) size 390x18 [bgcolor=#FF0000] [r=1 c=2 rs=1 cs=1]
+              RenderText {#text} at (0,0) size 378x18
+                text run at (0,0) width 378: "Second row, first cell empty, has colspan=2 and fixed width"
+      RenderBlock (anonymous) at (0,679) size 785x18
+        RenderText {#text} at (0,0) size 100x18
+          text run at (0,0) width 100: "One empty cell:"
+      RenderTable {TABLE} at (0,697) size 785x4 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x0
+          RenderTableRow {TR} at (0,0) size 781x0
+            RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
+      RenderBlock (anonymous) at (0,701) size 785x18
+        RenderText {#text} at (0,0) size 109x18
+          text run at (0,0) width 109: "Two empty cells:"
+      RenderTable {TABLE} at (0,719) size 785x4 [border: (2px solid #000000)]
+        RenderTableSection {TBODY} at (2,2) size 781x0
+          RenderTableRow {TR} at (0,0) size 781x0
+            RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=1 rs=1 cs=1]
diff --git a/LayoutTests/fast/table/empty-cells.html b/LayoutTests/fast/table/empty-cells.html
new file mode 100644 (file)
index 0000000..74c26fb
--- /dev/null
@@ -0,0 +1,224 @@
+<html><head>
+<style type="text/css"> 
+
+.percent { width:50%; }
+.fixed { width:400px; }
+.cell2 {height:25px; background-color: red }
+.border { border: 2px solid green } 
+.padding { padding: 2px } 
+.margin { margin: 2px } 
+.bgcolor { background-color: yellow } 
+.pre { white-space: pre }
+table { border: 2px solid black }
+
+</style>
+<body leftmargin="0" topmargin="0">
+
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2">First cell empty, second auto width</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2 percent">First cell empty, second percent width</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2 fixed">First cell empty, second fixed width</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 pre"> </td>
+<td class="cell2 percent">First cell empty (with space) and has white-space:pre</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 pre"></td>
+<td class="cell2 percent">First cell empty (no space) and has white-space:pre</td>
+</tr>
+</tbody>
+</table>
+
+<table id=c cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 border"> </td>
+<td class="cell2 percent">First cell empty but has border</td>
+</tr>
+</tbody>
+</table>
+
+<table id=c cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 padding"> </td>
+<td class="cell2 percent">First cell empty but has padding</td>
+</tr>
+</tbody>
+</table>
+
+<table id=c cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 margin"> </td>
+<td class="cell2 percent">First cell empty but has margin</td>
+</tr>
+</tbody>
+</table>
+
+<table id=e cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1 bgcolor"> </td>
+<td class="cell2 percent">First cell empty but has background color</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first cell empty</td>
+</tr>
+<tr>
+<td class="cell1"> text </td>
+<td class="cell2 percent">Second row, first cell not empty</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first cell empty</td>
+</tr>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2 percent">Second row, first cell empty</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1" colspan="2"> </td>
+<td class="cell2 percent">First cell empty, has colspan</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell2"> text </td>
+<td class="cell2 percent">First row, first cell empty, second cell non-empty</td>
+</tr>
+<tr>
+<td class="cell1" colspan="2"> </td>
+<td class="cell2">Second row, first cell empty with colspan=2</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell2"> text </td>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first cell non-empty, second cell empty</td>
+</tr>
+<tr>
+<td class="cell1" colspan="2"> </td>
+<td class="cell2">Second row, first cell empty with colspan=2</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first and second cell empty</td>
+</tr>
+<tr>
+<td class="cell1" colspan="2"> </td>
+<td class="cell2 percent">Second row, first cell empty, has colspan=2</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first and second cell empty</td>
+</tr>
+<tr>
+<td class="cell1 percent" colspan="2"> </td>
+<td class="cell2 percent">Second row, first cell empty, has colspan=2 and percent width</td>
+</tr>
+</tbody>
+</table>
+
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class="cell1"> </td>
+<td class="cell1"> </td>
+<td class="cell2 percent">First row, first and second cell empty</td>
+</tr>
+<tr>
+<td class="cell1 fixed" colspan="2"> </td>
+<td class="cell2 percent">Second row, first cell empty, has colspan=2 and fixed width</td>
+</tr>
+</tbody>
+</table>
+
+One empty cell:
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class=""> </td>
+</tr>
+</tbody>
+</table>
+
+Two empty cells:
+<table cellpadding="0" cellspacing="0" width="100%">
+<tbody>
+<tr>
+<td class=""> </td>
+<td class=""> </td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
+
index a806cc2..dca4244 100644 (file)
@@ -23,4 +23,4 @@ layer at (8,-6) size 100x7 backgroundClip at (0,0) size 800x600 clip at (0,0) si
     RenderTableSection {TBODY} at (0,5) size 100x0
     RenderTableSection {TBODY} at (0,5) size 100x2
       RenderTableRow {TR} at (0,0) size 100x2
-        RenderTableCell {TD} at (0,0) size 100x2 [r=0 c=0 rs=1 cs=1]
+        RenderTableCell {TD} at (0,0) size 2x2 [r=0 c=0 rs=1 cs=1]
index dac58a9..ca2b3b6 100644 (file)
@@ -11,7 +11,7 @@ layer at (36,2638) size 764x226
     RenderTable {TABLE} at (12,12) size 1x0
       RenderTableSection {TBODY} at (0,0) size 1x0
         RenderTableRow {TR} at (0,0) size 1x0
-          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
     RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
       RenderBlock {DIV} at (12,0) size 144x12
         RenderText {#text} at (0,-1) size 90x14
index 88edf1a..406776f 100644 (file)
@@ -11,7 +11,7 @@ layer at (36,72) size 764x226
     RenderTable {TABLE} at (12,12) size 1x0
       RenderTableSection {TBODY} at (0,0) size 1x0
         RenderTableRow {TR} at (0,0) size 1x0
-          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+          RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
     RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
       RenderBlock {DIV} at (12,0) size 144x12
         RenderText {#text} at (0,-1) size 90x14
index bcb6172..db713aa 100644 (file)
@@ -12,8 +12,8 @@ layer at (0,0) size 800x600
               RenderText {#text} at (0,0) size 100x18
                 text run at (0,0) width 100: "Correct Display"
           RenderTableRow {TR} at (0,18) size 150x0
-            RenderTableCell {TD} at (0,18) size 75x0 [r=1 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (75,18) size 75x0 [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (0,18) size 125x0 [r=1 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (125,18) size 25x0 [r=1 c=1 rs=1 cs=1]
       RenderBlock {P} at (0,34) size 784x0
       RenderTable {TABLE} at (0,34) size 150x18 [bgcolor=#FFCCCC]
         RenderTableCol {COL} at (0,0) size 0x0
index 043ba39..fb9e892 100644 (file)
@@ -136,6 +136,6 @@ layer at (0,0) size 800x600
                 RenderTable {TABLE} at (1,1) size 1x1
                   RenderTableSection {TBODY} at (0,0) size 1x1
                     RenderTableRow {TR} at (0,0) size 1x1
-                      RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
 layer at (279,79) size 211x13
   RenderBlock {DIV} at (3,3) size 211x13
index 2603345..0f843f1 100644 (file)
@@ -1 +1 @@
-725e1444e5846dedf87517a1f6fe8576
\ No newline at end of file
+be8f793d7fa9a1c4e7f799937144750f
\ No newline at end of file
index cf356bb..c2aba1f 100644 (file)
Binary files a/LayoutTests/tables/mozilla/bugs/bug16012-expected.png and b/LayoutTests/tables/mozilla/bugs/bug16012-expected.png differ
index 738b541..c718a98 100644 (file)
@@ -11,9 +11,9 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,36) size 37x5
         RenderTableSection {TBODY} at (0,0) size 37x5
           RenderTableRow {TR} at (0,2) size 37x1
-            RenderTableCell {TD} at (2,2) size 30x1 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (2,2) size 31x1 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
               RenderImage {IMG} at (0,0) size 30x1
-            RenderTableCell {TD} at (34,2) size 1x0 [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (35,2) size 0x0 [r=0 c=1 rs=1 cs=1]
       RenderBlock (anonymous) at (0,41) size 784x18
         RenderBR {BR} at (0,0) size 0x18
       RenderTable {TABLE} at (0,59) size 34x5
index 7d8c644..8f81c29 100644 (file)
@@ -6,6 +6,6 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,0) size 784x0
         RenderTableSection {TBODY} at (0,0) size 784x0
           RenderTableRow {TR} at (0,0) size 784x0
-            RenderTableCell {TD} at (0,0) size 400x0 [bgcolor=#0000CC] [r=0 c=0 rs=1 cs=1]
-            RenderTableCell {TD} at (400,0) size 6x0 [bgcolor=#00CC00] [r=0 c=1 rs=1 cs=1]
-            RenderTableCell {TD} at (406,0) size 378x0 [bgcolor=#CC0000] [r=0 c=2 rs=1 cs=1]
+            RenderTableCell {TD} at (0,0) size 772x0 [bgcolor=#0000CC] [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (772,0) size 12x0 [bgcolor=#00CC00] [r=0 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (784,0) size 0x0 [bgcolor=#CC0000] [r=0 c=2 rs=1 cs=1]
index 2d9b1e0..2b9831a 100644 (file)
@@ -10,4 +10,4 @@ layer at (0,0) size 800x600
               RenderTable {TABLE} at (0,0) size 1x0
                 RenderTableSection {TBODY} at (0,0) size 1x0
                   RenderTableRow {TR} at (0,0) size 1x0
-                    RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+                    RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
index 3344649..ed7d494 100644 (file)
@@ -6,4 +6,4 @@ layer at (0,0) size 800x600
       RenderTable {TABLE} at (0,0) size 400x8 [border: (1px solid #0000FF)]
         RenderTableSection {TBODY} at (1,1) size 398x6
           RenderTableRow {TR} at (0,2) size 398x2
-            RenderTableCell {TD} at (2,2) size 394x2 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
index fc28f96..acb4bdb 100644 (file)
@@ -11,7 +11,7 @@ layer at (0,0) size 800x600
                 RenderTableSection {TBODY} at (0,0) size 120x6
                   RenderTableRow {TR} at (0,2) size 120x2
                     RenderBlock {FORM} at (0,0) size 0x0
-                    RenderTableCell {TD} at (2,2) size 116x2 [r=0 c=0 rs=1 cs=1]
+                    RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
             RenderTableCell {TD} at (128,2) size 510x166 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
               RenderTable {TABLE} at (2,2) size 506x162 [border: (1px outset #808080)]
                 RenderTableSection {TBODY} at (1,1) size 504x160
index 3153285..e4721ed 100644 (file)
@@ -1 +1 @@
-f3e8ac5f89b07679968161599c0e5f42
\ No newline at end of file
+d96a636356e5d322ca479a685f7816af
\ No newline at end of file
index d5efd3d..d001bd2 100644 (file)
Binary files a/LayoutTests/tables/mozilla/core/misc-expected.png and b/LayoutTests/tables/mozilla/core/misc-expected.png differ
index da9620f..85c3923 100644 (file)
@@ -1,8 +1,8 @@
-layer at (0,0) size 812x585
-  RenderView at (0,0) size 800x585
-layer at (0,0) size 812x585
-  RenderBlock {HTML} at (0,0) size 800x585
-    RenderBody {BODY} at (8,8) size 784x569
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
       RenderBlock (anonymous) at (0,0) size 784x18
         RenderText {#text} at (0,0) size 226x18
           text run at (0,0) width 226: "cell split with color (standard mode)"
@@ -22,16 +22,16 @@ layer at (0,0) size 812x585
       RenderTable {TABLE} at (0,100) size 600x109
         RenderTableSection {TBODY} at (0,0) size 600x109
           RenderTableRow {TR} at (0,2) size 600x44
-            RenderTableCell {TD} at (2,2) size 800x44 [r=0 c=0 rs=1 cs=3]
-              RenderImage {IMG} at (110,1) size 579x42
+            RenderTableCell {TD} at (2,2) size 594x44 [r=0 c=0 rs=1 cs=3]
+              RenderImage {IMG} at (7,1) size 579x42
               RenderText {#text} at (0,0) size 0x0
           RenderTableRow {TR} at (0,48) size 600x37
-            RenderTableCell {TD} at (2,48) size 371x37 [r=1 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (2,48) size 242x37 [r=1 c=0 rs=1 cs=1]
               RenderImage {IMG} at (1,1) size 232x35 [border: (1px solid #000000)]
-            RenderTableCell {TD} at (375,56) size 219x20 [r=1 c=1 rs=1 cs=1]
-              RenderText {#text} at (39,1) size 140x18
-                text run at (39,1) width 140: "Hassle-Free Upgrades"
+            RenderTableCell {TD} at (246,56) size 142x20 [r=1 c=1 rs=1 cs=1]
+              RenderText {#text} at (1,1) size 140x18
+                text run at (1,1) width 140: "Hassle-Free Upgrades"
           RenderTableRow {TR} at (0,87) size 600x20
-            RenderTableCell {TD} at (2,87) size 802x20 [bgcolor=#99CCCC] [r=2 c=0 rs=1 cs=4]
+            RenderTableCell {TD} at (2,87) size 596x20 [bgcolor=#99CCCC] [r=2 c=0 rs=1 cs=4]
               RenderText {#text} at (1,1) size 8x18
                 text run at (1,1) width 8: "x"
index b9acd56..cd5b009 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png and b/LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-1-expected.png differ
index b70f1af..3c4515f 100644 (file)
@@ -64,16 +64,16 @@ layer at (0,0) size 785x664
                         text run at (0,252) width 296: "# # # # # # # # # # # # # # # # # # # # # # # # #"
                         text run at (0,270) width 296: "# # # # # # # # # # # # # # # # # # # # # # # # #"
                         text run at (0,288) width 236: "# # # # # # # # # # # # # # # # # # # #"
-            RenderTableCell {TD} at (537,0) size 231x324 [r=0 c=2 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 231x324
-                RenderTableSection {THEAD} at (0,0) size 231x18
-                  RenderTableRow {TR} at (0,0) size 231x18
-                    RenderTableCell {TH} at (0,0) size 231x18 [r=0 c=0 rs=1 cs=1]
-                      RenderText {#text} at (78,0) size 74x18
-                        text run at (78,0) width 74: "Header 3/1"
-                RenderTableSection {TBODY} at (0,18) size 231x306
-                  RenderTableRow {TR} at (0,0) size 231x306
-                    RenderTableCell {TD} at (0,0) size 231x306 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (537,0) size 232x324 [r=0 c=2 rs=1 cs=1]
+              RenderTable {TABLE} at (0,0) size 232x324
+                RenderTableSection {THEAD} at (0,0) size 232x18
+                  RenderTableRow {TR} at (0,0) size 232x18
+                    RenderTableCell {TH} at (0,0) size 232x18 [r=0 c=0 rs=1 cs=1]
+                      RenderText {#text} at (79,0) size 74x18
+                        text run at (79,0) width 74: "Header 3/1"
+                RenderTableSection {TBODY} at (0,18) size 232x306
+                  RenderTableRow {TR} at (0,0) size 232x306
+                    RenderTableCell {TD} at (0,0) size 232x306 [r=0 c=0 rs=1 cs=1]
                       RenderText {#text} at (0,0) size 230x306
                         text run at (0,0) width 230: "1 2 3 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
                         text run at (0,18) width 230: "! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
@@ -93,7 +93,7 @@ layer at (0,0) size 785x664
                         text run at (0,252) width 230: "! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
                         text run at (0,270) width 230: "! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
                         text run at (0,288) width 41: "! ! ! ! !"
-            RenderTableCell {TD} at (768,0) size 1x0 [r=0 c=3 rs=1 cs=1]
+            RenderTableCell {TD} at (769,0) size 0x0 [r=0 c=3 rs=1 cs=1]
           RenderTableRow {TR} at (0,324) size 769x324
             RenderTableCell {TD} at (0,324) size 230x324 [r=1 c=0 rs=1 cs=1]
               RenderTable {TABLE} at (0,0) size 230x324
@@ -153,16 +153,16 @@ layer at (0,0) size 785x664
                         text run at (0,252) width 296: "# # # # # # # # # # # # # # # # # # # # # # # # #"
                         text run at (0,270) width 296: "# # # # # # # # # # # # # # # # # # # # # # # # #"
                         text run at (0,288) width 236: "# # # # # # # # # # # # # # # # # # # #"
-            RenderTableCell {TD} at (537,324) size 231x324 [r=1 c=2 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 231x324
-                RenderTableSection {THEAD} at (0,0) size 231x18
-                  RenderTableRow {TR} at (0,0) size 231x18
-                    RenderTableCell {TH} at (0,0) size 231x18 [r=0 c=0 rs=1 cs=1]
-                      RenderText {#text} at (78,0) size 74x18
-                        text run at (78,0) width 74: "Header 3/2"
-                RenderTableSection {TBODY} at (0,18) size 231x306
-                  RenderTableRow {TR} at (0,0) size 231x306
-                    RenderTableCell {TD} at (0,0) size 231x306 [r=0 c=0 rs=1 cs=1]
+            RenderTableCell {TD} at (537,324) size 232x324 [r=1 c=2 rs=1 cs=1]
+              RenderTable {TABLE} at (0,0) size 232x324
+                RenderTableSection {THEAD} at (0,0) size 232x18
+                  RenderTableRow {TR} at (0,0) size 232x18
+                    RenderTableCell {TH} at (0,0) size 232x18 [r=0 c=0 rs=1 cs=1]
+                      RenderText {#text} at (79,0) size 74x18
+                        text run at (79,0) width 74: "Header 3/2"
+                RenderTableSection {TBODY} at (0,18) size 232x306
+                  RenderTableRow {TR} at (0,0) size 232x306
+                    RenderTableCell {TD} at (0,0) size 232x306 [r=0 c=0 rs=1 cs=1]
                       RenderText {#text} at (0,0) size 230x306
                         text run at (0,0) width 230: "1 2 3 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
                         text run at (0,18) width 230: "! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"
index d95535c..9b832e1 100644 (file)
Binary files a/LayoutTests/tables/mozilla_expected_failures/bugs/bug72393-expected.png and b/LayoutTests/tables/mozilla_expected_failures/bugs/bug72393-expected.png differ
index bba66d7..0f208c1 100644 (file)
@@ -12,13 +12,13 @@ layer at (0,0) size 800x600
               RenderTable {TABLE} at (1,1) size 498x229 [bgcolor=#FFFF00]
                 RenderTableSection {TBODY} at (0,0) size 498x229
                   RenderTableRow {TR} at (0,0) size 498x229
-                    RenderTableCell {TD} at (0,114) size 1x0 [r=0 c=0 rs=1 cs=1]
-                    RenderTableCell {TD} at (1,67) size 496x95 [r=0 c=1 rs=1 cs=1]
-                      RenderBlock {H1} at (0,0) size 496x74
+                    RenderTableCell {TD} at (0,114) size 0x0 [r=0 c=0 rs=1 cs=1]
+                    RenderTableCell {TD} at (0,67) size 498x95 [r=0 c=1 rs=1 cs=1]
+                      RenderBlock {H1} at (0,0) size 498x74
                         RenderText {#text} at (0,0) size 479x74
                           text run at (0,0) width 479: "Detonator Comparison In 3DMark"
                           text run at (0,37) width 64: "2001"
-                    RenderTableCell {TD} at (497,114) size 1x0 [r=0 c=2 rs=1 cs=1]
+                    RenderTableCell {TD} at (498,114) size 0x0 [r=0 c=2 rs=1 cs=1]
             RenderTableCell {TD} at (639,114) size 5x2 [border: (1px inset #808080)] [r=0 c=3 rs=1 cs=1]
             RenderTableCell {TD} at (644,57) size 134x117 [border: (1px inset #808080)] [r=0 c=4 rs=1 cs=1]
               RenderTable {TABLE} at (1,1) size 132x115 [bgcolor=#FFA500] [border: (1px outset #808080)]
index 3141069..cba32bc 100644 (file)
@@ -10,17 +10,17 @@ layer at (0,0) size 785x2496
         RenderTable {TABLE} at (0,18) size 100x0 [bgcolor=#FFA500]
           RenderTableSection {TBODY} at (0,0) size 100x0
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=1 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=2 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=2 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=3 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=3 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=4 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=4 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,0) size 100x0
-              RenderTableCell {TD} at (0,0) size 100x0 [r=5 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,0) size 0x0 [r=5 c=0 rs=1 cs=1]
         RenderBlock (anonymous) at (0,18) size 769x18
           RenderBR {BR} at (0,0) size 0x18
       RenderBlock {P} at (0,52) size 769x50
@@ -50,17 +50,17 @@ layer at (0,0) size 785x2496
         RenderTable {TABLE} at (0,18) size 100x12 [bgcolor=#FFA500]
           RenderTableSection {TBODY} at (0,0) size 100x12
             RenderTableRow {TR} at (0,0) size 100x2
-              RenderTableCell {TD} at (0,1) size 100x0 [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,1) size 0x0 [r=0 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,2) size 100x2
-              RenderTableCell {TD} at (0,3) size 100x0 [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,3) size 0x0 [r=1 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,4) size 100x2
-              RenderTableCell {TD} at (0,5) size 100x0 [r=2 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,5) size 0x0 [r=2 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,6) size 100x2
-              RenderTableCell {TD} at (0,7) size 100x0 [r=3 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,7) size 0x0 [r=3 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,8) size 100x2
-              RenderTableCell {TD} at (0,9) size 100x0 [r=4 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,9) size 0x0 [r=4 c=0 rs=1 cs=1]
             RenderTableRow {TR} at (0,10) size 100x2
-              RenderTableCell {TD} at (0,11) size 100x0 [r=5 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (0,11) size 0x0 [r=5 c=0 rs=1 cs=1]
         RenderBlock (anonymous) at (0,30) size 769x18
           RenderBR {BR} at (0,0) size 0x18
       RenderBlock {P} at (0,182) size 769x50
@@ -229,12 +229,12 @@ layer at (0,0) size 785x2496
                 RenderTable {TABLE} at (1,1) size 6x0 [bgcolor=#FFA500]
                   RenderTableSection {TBODY} at (0,0) size 6x0
                     RenderTableRow {TR} at (0,0) size 6x0
-                      RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
-                      RenderTableCell {TD} at (1,0) size 1x0 [r=0 c=1 rs=1 cs=1]
-                      RenderTableCell {TD} at (2,0) size 1x0 [r=0 c=2 rs=1 cs=1]
-                      RenderTableCell {TD} at (3,0) size 1x0 [r=0 c=3 rs=1 cs=1]
-                      RenderTableCell {TD} at (4,0) size 1x0 [r=0 c=4 rs=1 cs=1]
-                      RenderTableCell {TD} at (5,0) size 1x0 [r=0 c=5 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=0 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=1 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=2 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=3 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=4 rs=1 cs=1]
+                      RenderTableCell {TD} at (0,0) size 0x0 [r=0 c=5 rs=1 cs=1]
         RenderBlock (anonymous) at (0,22) size 769x18
           RenderBR {BR} at (0,0) size 0x18
       RenderBlock {P} at (0,528) size 769x18
index dfc0fb2..74ab604 100644 (file)
@@ -1,3 +1,23 @@
+2007-04-27  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Darin, Hyatt.
+        
+        Fix http://bugs.webkit.org/show_bug.cgi?id=13081
+        Empty table cells not handled correctly
+        <rdar://problem/5067926>
+        
+        To match Firefox and IE, empty table cells with variable width need to be
+        treated as special case. They generally get zero width.
+
+        * rendering/AutoTableLayout.cpp:
+        (WebCore::AutoTableLayout::recalcColumn):
+        (WebCore::AutoTableLayout::calcEffectiveWidth):
+        (WebCore::AutoTableLayout::layout):
+        * rendering/AutoTableLayout.h:
+        (WebCore::AutoTableLayout::Layout::Layout):
+        * rendering/RenderStyle.h:
+        (WebCore::RenderStyle::hasPadding):
+
 2007-04-27  Rob Buis  <buis@kde.org>
 
         Reviewed by Oliver.
index b116904..4cdc5a3 100644 (file)
@@ -69,12 +69,16 @@ void AutoTableLayout::recalcColumn(int effCol)
                 RenderTableSection::CellStruct current = section->cellAt(i, effCol);
                 RenderTableCell* cell = current.cell;
                 
+                bool cellHasContent = cell && (cell->firstChild() || cell->style()->hasBorder() || cell->style()->hasPadding());
+                if (cellHasContent)
+                    l.emptyCellsOnly = false;
+                    
                 if (current.inColSpan)
                     continue;
                 if (cell && cell->colSpan() == 1) {
                     // A cell originates in this column.  Ensure we have
                     // a min/max width of at least 1px for this column now.
-                    l.minWidth = max(l.minWidth, 1);
+                    l.minWidth = max(l.minWidth, cellHasContent ? 1 : 0);
                     l.maxWidth = max(l.maxWidth, 1);
                     if (cell->prefWidthsDirty())
                         cell->calcPrefWidths();
@@ -125,7 +129,7 @@ void AutoTableLayout::recalcColumn(int effCol)
                     if (cell && (!effCol || section->cellAt(i, effCol-1).cell != cell)) {
                         // This spanning cell originates in this column.  Ensure we have
                         // a min/max width of at least 1px for this column now.
-                        l.minWidth = max(l.minWidth, 1);
+                        l.minWidth = max(l.minWidth, cellHasContent ? 1 : 0);
                         l.maxWidth = max(l.maxWidth, 1);
                         insertSpanCell(cell);
                     }
@@ -326,6 +330,7 @@ int AutoTableLayout::calcEffectiveWidth()
         bool allColsArePercent = true;
         bool allColsAreFixed = true;
         bool haveAuto = false;
+        bool spanHasEmptyCellsOnly = true;
         int fixedWidth = 0;
         while (lastCol < nEffCols && span > 0) {
             switch (m_layoutStruct[lastCol].width.type()) {
@@ -361,6 +366,8 @@ int AutoTableLayout::calcEffectiveWidth()
                     totalPercent += m_layoutStruct[lastCol].effWidth.rawValue();
                 allColsAreFixed = false;
             }
+            if (!m_layoutStruct[lastCol].emptyCellsOnly)
+                spanHasEmptyCellsOnly = false;
             span -= m_table->spanOfEffCol(lastCol);
             minWidth += m_layoutStruct[lastCol].effMinWidth;
             maxWidth += m_layoutStruct[lastCol].effMaxWidth;
@@ -453,6 +460,10 @@ int AutoTableLayout::calcEffectiveWidth()
             for (unsigned int pos = col; pos < lastCol; pos++)
                 m_layoutStruct[pos].maxWidth = max(m_layoutStruct[pos].maxWidth, m_layoutStruct[pos].minWidth);
         }
+        // treat span ranges consisting of empty cells only as if they had content
+        if (spanHasEmptyCellsOnly)
+            for (unsigned int pos = col; pos < lastCol; pos++)
+                m_layoutStruct[pos].emptyCellsOnly = false;
     }
     m_effWidthDirty = false;
 
@@ -524,6 +535,7 @@ void AutoTableLayout::layout()
     int totalFixed = 0;
     int totalPercent = 0;
     int allocAuto = 0;
+    int numAutoEmptyCellsOnly = 0;
 
     // fill up every cell with its minWidth
     for (int i = 0; i < nEffCols; i++) {
@@ -547,9 +559,14 @@ void AutoTableLayout::layout()
             break;
         case Auto:
         case Static:
-            numAuto++;
-            totalAuto += m_layoutStruct[i].effMaxWidth;
-            allocAuto += w;
+            if (m_layoutStruct[i].emptyCellsOnly) 
+                numAutoEmptyCellsOnly++;            
+            else {
+                numAuto++;
+                totalAuto += m_layoutStruct[i].effMaxWidth;
+                allocAuto += w;
+            }
+            break;
         default:
             break;
         }
@@ -617,7 +634,7 @@ void AutoTableLayout::layout()
         available += allocAuto; // this gets redistributed
         for (int i = 0; i < nEffCols; i++) {
             Length &width = m_layoutStruct[i].effWidth;
-            if (width.isAuto() && totalAuto != 0) {
+            if (width.isAuto() && totalAuto != 0 && !m_layoutStruct[i].emptyCellsOnly) {
                 int w = max(int(m_layoutStruct[i].calcWidth), available * m_layoutStruct[i].effMaxWidth / totalAuto);
                 available -= w;
                 totalAuto -= m_layoutStruct[i].effMaxWidth;
@@ -667,11 +684,14 @@ void AutoTableLayout::layout()
 #endif
 
     // spread over the rest
-    if (available > 0) {
-        int total = nEffCols;
+    if (available > 0 && nEffCols > numAutoEmptyCellsOnly) {
+        int total = nEffCols - numAutoEmptyCellsOnly;
         // still have some width to spread
         int i = nEffCols;
-        while ( i--) {
+        while (i--) {
+            // variable columns with empty cells only don't get any width
+            if (m_layoutStruct[i].width.isAuto() && m_layoutStruct[i].emptyCellsOnly)
+                continue;
             int w = available / total;
             available -= w;
             total--;
index 57ef2e2..c56cf75 100644 (file)
@@ -62,7 +62,8 @@ protected:
             , maxWidth(0)
             , effMinWidth(0)
             , effMaxWidth(0)
-            , calcWidth(0) {}
+            , calcWidth(0)
+            , emptyCellsOnly(true) {}
         Length width;
         Length effWidth;
         int minWidth;
@@ -70,6 +71,7 @@ protected:
         int effMinWidth;
         int effMaxWidth;
         int calcWidth;
+        bool emptyCellsOnly;
     };
 
     Vector<Layout, 4> m_layoutStruct;
index a340b4b..a5f6e83 100644 (file)
@@ -1229,6 +1229,7 @@ public:
     bool        isFloating() const { return !(noninherited_flags._floating == FNONE); }
     bool        hasMargin() const { return surround->margin.nonZero(); }
     bool        hasBorder() const { return surround->border.hasBorder(); }
+    bool        hasPadding() const { return surround->padding.nonZero(); }
     bool        hasOffset() const { return surround->offset.nonZero(); }
 
     bool hasBackground() const { if (backgroundColor().isValid() && backgroundColor().alpha() > 0)