Caret rendered at incorrect location inside empty table cell
authorrego@igalia.com <rego@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Apr 2018 07:10:48 +0000 (07:10 +0000)
committerrego@igalia.com <rego@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Apr 2018 07:10:48 +0000 (07:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=85385

Reviewed by Zalan Bujtas.

Source/WebCore:

This is based on a previous patch by Shezan Baig <shezbaig.wk@gmail.com>.

This fixes the position of the caret in empty cells,
that was painted lower than expected
(and then modified when you start to edit the cell).

Ensures that editable table cells have at least one line when
they are laid out. This ensures that the cell's intrinsic before/after
padding is calculated correctly, which results in the caret location
being calculated correctly.

Test: editing/caret/caret-in-empty-cell.html

* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::hasLineIfEmpty): Override method to consider
that it has an an empty line if the table cell is editable.
* rendering/RenderTableCell.h:

LayoutTests:

* editing/caret/caret-in-empty-cell-expected.html: Added.
* editing/caret/caret-in-empty-cell.html: Added.
* editing/deleting/5206311-2-expected.txt:
* editing/deleting/5433862-1-expected.txt:
* platform/gtk/editing/deleting/5126166-expected.png:
* platform/gtk/editing/deleting/5126166-expected.txt:
* platform/gtk/editing/deleting/5206311-1-expected.png:
* platform/gtk/editing/deleting/5206311-1-expected.txt:
* platform/gtk/editing/deleting/5433862-2-expected.png:
* platform/gtk/editing/deleting/5433862-2-expected.txt:
* platform/gtk/editing/deleting/5483370-expected.png:
* platform/gtk/editing/deleting/5483370-expected.txt:
* platform/gtk/editing/selection/move-by-line-001-expected.png:
* platform/gtk/editing/selection/move-by-line-001-expected.txt:
* platform/gtk/editing/selection/select-all-004-expected.txt:
* platform/ios-simulator/editing/deleting/5126166-expected.txt:
* platform/ios-simulator/editing/deleting/5206311-1-expected.txt:
* platform/ios-simulator/editing/deleting/5433862-2-expected.txt:
* platform/ios-simulator/editing/deleting/5483370-expected.txt:
* platform/mac/editing/deleting/5126166-expected.png:
* platform/mac/editing/deleting/5126166-expected.txt:
* platform/mac/editing/deleting/5206311-1-expected.png:
* platform/mac/editing/deleting/5206311-1-expected.txt:
* platform/mac/editing/deleting/5433862-2-expected.png:
* platform/mac/editing/deleting/5433862-2-expected.txt:
* platform/mac/editing/deleting/5483370-expected.png:
* platform/mac/editing/deleting/5483370-expected.txt:
* platform/mac/editing/selection/move-by-line-001-expected.txt:
* platform/mac/editing/selection/select-all-004-expected.txt:
* platform/win/editing/deleting/5126166-expected.png: Added.
* platform/win/editing/deleting/5126166-expected.txt:
* platform/win/editing/deleting/5206311-1-expected.png: Added.
* platform/win/editing/deleting/5206311-1-expected.txt:
* platform/win/editing/deleting/5433862-2-expected.png: Added.
* platform/win/editing/deleting/5433862-2-expected.txt:
* platform/win/editing/deleting/5483370-expected.png: Added.
* platform/win/editing/deleting/5483370-expected.txt:

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

41 files changed:
LayoutTests/ChangeLog
LayoutTests/editing/caret/caret-in-empty-cell-expected.html [new file with mode: 0644]
LayoutTests/editing/caret/caret-in-empty-cell.html [new file with mode: 0644]
LayoutTests/editing/deleting/5206311-2-expected.txt
LayoutTests/editing/deleting/5433862-1-expected.txt
LayoutTests/editing/selection/select-all-004-expected.txt
LayoutTests/platform/gtk/editing/deleting/5126166-expected.png
LayoutTests/platform/gtk/editing/deleting/5126166-expected.txt
LayoutTests/platform/gtk/editing/deleting/5206311-1-expected.png
LayoutTests/platform/gtk/editing/deleting/5206311-1-expected.txt
LayoutTests/platform/gtk/editing/deleting/5433862-2-expected.png
LayoutTests/platform/gtk/editing/deleting/5433862-2-expected.txt
LayoutTests/platform/gtk/editing/deleting/5483370-expected.png
LayoutTests/platform/gtk/editing/deleting/5483370-expected.txt
LayoutTests/platform/gtk/editing/selection/move-by-line-001-expected.png
LayoutTests/platform/gtk/editing/selection/move-by-line-001-expected.txt
LayoutTests/platform/ios/editing/deleting/5126166-expected.txt
LayoutTests/platform/ios/editing/deleting/5206311-1-expected.txt
LayoutTests/platform/ios/editing/deleting/5433862-2-expected.txt
LayoutTests/platform/ios/editing/deleting/5483370-expected.txt
LayoutTests/platform/mac/editing/deleting/5126166-expected.png
LayoutTests/platform/mac/editing/deleting/5126166-expected.txt
LayoutTests/platform/mac/editing/deleting/5206311-1-expected.png
LayoutTests/platform/mac/editing/deleting/5206311-1-expected.txt
LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png
LayoutTests/platform/mac/editing/deleting/5433862-2-expected.txt
LayoutTests/platform/mac/editing/deleting/5483370-expected.png
LayoutTests/platform/mac/editing/deleting/5483370-expected.txt
LayoutTests/platform/mac/editing/selection/move-by-line-001-expected.txt
LayoutTests/platform/mac/editing/selection/select-all-004-expected.txt
LayoutTests/platform/win/editing/deleting/5126166-expected.png [new file with mode: 0644]
LayoutTests/platform/win/editing/deleting/5126166-expected.txt
LayoutTests/platform/win/editing/deleting/5206311-1-expected.png [new file with mode: 0644]
LayoutTests/platform/win/editing/deleting/5206311-1-expected.txt
LayoutTests/platform/win/editing/deleting/5433862-2-expected.png [new file with mode: 0644]
LayoutTests/platform/win/editing/deleting/5433862-2-expected.txt
LayoutTests/platform/win/editing/deleting/5483370-expected.png [new file with mode: 0644]
LayoutTests/platform/win/editing/deleting/5483370-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderTableCell.cpp
Source/WebCore/rendering/RenderTableCell.h

index 189370e..cf98fc1 100644 (file)
@@ -1,3 +1,48 @@
+2018-04-19  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        Caret rendered at incorrect location inside empty table cell
+        https://bugs.webkit.org/show_bug.cgi?id=85385
+
+        Reviewed by Zalan Bujtas.
+
+        * editing/caret/caret-in-empty-cell-expected.html: Added.
+        * editing/caret/caret-in-empty-cell.html: Added.
+        * editing/deleting/5206311-2-expected.txt:
+        * editing/deleting/5433862-1-expected.txt:
+        * platform/gtk/editing/deleting/5126166-expected.png:
+        * platform/gtk/editing/deleting/5126166-expected.txt:
+        * platform/gtk/editing/deleting/5206311-1-expected.png:
+        * platform/gtk/editing/deleting/5206311-1-expected.txt:
+        * platform/gtk/editing/deleting/5433862-2-expected.png:
+        * platform/gtk/editing/deleting/5433862-2-expected.txt:
+        * platform/gtk/editing/deleting/5483370-expected.png:
+        * platform/gtk/editing/deleting/5483370-expected.txt:
+        * platform/gtk/editing/selection/move-by-line-001-expected.png:
+        * platform/gtk/editing/selection/move-by-line-001-expected.txt:
+        * platform/gtk/editing/selection/select-all-004-expected.txt:
+        * platform/ios-simulator/editing/deleting/5126166-expected.txt:
+        * platform/ios-simulator/editing/deleting/5206311-1-expected.txt:
+        * platform/ios-simulator/editing/deleting/5433862-2-expected.txt:
+        * platform/ios-simulator/editing/deleting/5483370-expected.txt:
+        * platform/mac/editing/deleting/5126166-expected.png:
+        * platform/mac/editing/deleting/5126166-expected.txt:
+        * platform/mac/editing/deleting/5206311-1-expected.png:
+        * platform/mac/editing/deleting/5206311-1-expected.txt:
+        * platform/mac/editing/deleting/5433862-2-expected.png:
+        * platform/mac/editing/deleting/5433862-2-expected.txt:
+        * platform/mac/editing/deleting/5483370-expected.png:
+        * platform/mac/editing/deleting/5483370-expected.txt:
+        * platform/mac/editing/selection/move-by-line-001-expected.txt:
+        * platform/mac/editing/selection/select-all-004-expected.txt:
+        * platform/win/editing/deleting/5126166-expected.png: Added.
+        * platform/win/editing/deleting/5126166-expected.txt:
+        * platform/win/editing/deleting/5206311-1-expected.png: Added.
+        * platform/win/editing/deleting/5206311-1-expected.txt:
+        * platform/win/editing/deleting/5433862-2-expected.png: Added.
+        * platform/win/editing/deleting/5433862-2-expected.txt:
+        * platform/win/editing/deleting/5483370-expected.png: Added.
+        * platform/win/editing/deleting/5483370-expected.txt:
+
 2018-04-18  Youenn Fablet  <youenn@apple.com>
 
         Allow SameOrigin credentials handling for synchronous XHR
diff --git a/LayoutTests/editing/caret/caret-in-empty-cell-expected.html b/LayoutTests/editing/caret/caret-in-empty-cell-expected.html
new file mode 100644 (file)
index 0000000..14f3ef0
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<style>
+  table {
+    font-size: 2em;
+  }
+  td {
+    padding: 5px;
+  }
+  #emptycell {
+    width: 50%;
+  }
+</style>
+
+<p>Test passes if the caret in the empty cell is inside the cell itself (that means it's vertically aligned with the reference text).</p>
+
+<table border="1" contenteditable>
+  <td>Reference text</td>
+  <td id="emptycell">&nbsp;</td>
+</table>
+
+<script>
+  var selection = window.getSelection();
+  var emptycell = document.getElementById("emptycell");
+  selection.collapse(emptycell, 0);
+</script>
diff --git a/LayoutTests/editing/caret/caret-in-empty-cell.html b/LayoutTests/editing/caret/caret-in-empty-cell.html
new file mode 100644 (file)
index 0000000..629eaac
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<style>
+  table {
+    font-size: 2em;
+  }
+  td {
+    padding: 5px;
+  }
+  #emptycell {
+    width: 50%;
+  }
+</style>
+
+<p>Test passes if the caret in the empty cell is inside the cell itself (that means it's vertically aligned with the reference text).</p>
+
+<table border="1" contenteditable>
+  <td>Reference text</td>
+  <td id="emptycell"></td>
+</table>
+
+<script>
+  var selection = window.getSelection();
+  var emptycell = document.getElementById("emptycell");
+  selection.collapse(emptycell, 0);
+</script>
index f1f7d7d..32096ed 100644 (file)
@@ -27,7 +27,6 @@ The second cell, which used to contain '5', is replaced with the 'world!' text,
 |         "<#selection-caret>world!"
 |         <br>
 |       <td>
-|         <br>
 | "
 "
 
@@ -59,16 +58,13 @@ In the second table, the first row (cells 1-3) is removed and cells 4-5 in the s
 |         <#selection-caret>
 |         <br>
 |       <td>
-|         <br>
 | <table>
 |   border="1"
 |   <tbody>
 |     <tr>
 |       <td>
-|         <br>
 |       <td>
 |         class="end"
-|         <br>
 |       <td>
 |         "6"
 |     "
index 953c81d..200edb5 100644 (file)
@@ -2,7 +2,4 @@ This tests for a crash when removing a selection ends with a fully selected tabl
 
 foo
 
-
-
-
 foo    bar     baz
index 35c182a..7dfcc72 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x585
       RenderBlock (anonymous) at (74,74) size 600x48
         RenderText {#text} at (0,11) size 54x26
           text run at (0,11) width 54: "Hello"
-      RenderTable {TABLE} at (74,122) size 6x6
-        RenderTableSection {TBODY} at (0,0) size 6x6
-          RenderTableRow {TR} at (0,2) size 6x2
-            RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
-      RenderBlock (anonymous) at (74,128) size 600x48
+      RenderTable {TABLE} at (74,122) size 6x23
+        RenderTableSection {TBODY} at (0,0) size 6x23
+          RenderTableRow {TR} at (0,2) size 6x19
+            RenderTableCell {TD} at (2,2) size 2x19 [r=0 c=0 rs=1 cs=1]
+      RenderBlock (anonymous) at (74,145) size 600x48
         RenderBR {BR} at (0,11) size 0x26
 selection start: position 1 of child 2 {#text} of body
 selection end:   position 0 of child 5 {BR} of body
index 25694e9..fdecc0c 100644 (file)
Binary files a/LayoutTests/platform/gtk/editing/deleting/5126166-expected.png and b/LayoutTests/platform/gtk/editing/deleting/5126166-expected.png differ
index 1cae449..04e7d5e 100644 (file)
@@ -12,13 +12,13 @@ layer at (0,0) size 800x600
         RenderTable {TABLE} at (0,0) size 16x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 14x26
             RenderTableRow {TR} at (0,2) size 14x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x17
         RenderTable {TABLE} at (0,28) size 351x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 349x26
             RenderTableRow {TR} at (0,2) size 349x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 339x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 335x17
                   text run at (2,2) width 335: "There should be one empty cell to the left of this one."
index 0af9f7a..f95e3dd 100644 (file)
Binary files a/LayoutTests/platform/gtk/editing/deleting/5206311-1-expected.png and b/LayoutTests/platform/gtk/editing/deleting/5206311-1-expected.png differ
index 0c7fa16..0a262c7 100644 (file)
@@ -21,12 +21,9 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (16,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (22,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
             RenderTableRow {TR} at (0,26) size 36x22
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (16,26) size 4x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (22,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x17
                   text run at (2,2) width 8: "9"
@@ -50,9 +47,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (16,26) size 12x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (30,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
             RenderTableRow {TR} at (0,50) size 44x22
               RenderTableCell {TD} at (2,50) size 12x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x17
@@ -75,9 +70,7 @@ layer at (0,0) size 800x600
           RenderTableSection {TBODY} at (1,1) size 44x50
             RenderTableRow {TR} at (0,2) size 44x22
               RenderTableCell {TD} at (2,2) size 12x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x17
               RenderTableCell {TD} at (30,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x17
                   text run at (2,2) width 8: "6"
index f98695f..25177a9 100644 (file)
Binary files a/LayoutTests/platform/gtk/editing/deleting/5433862-2-expected.png and b/LayoutTests/platform/gtk/editing/deleting/5433862-2-expected.png differ
index 519c89b..9f9f005 100644 (file)
@@ -15,9 +15,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,2) size 33x30 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderBR {BR} at (6,6) size 0x17
               RenderTableCell {TD} at (37,2) size 32x30 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x17
               RenderTableCell {TD} at (71,2) size 34x30 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x17
             RenderTableRow {TR} at (0,34) size 107x30
               RenderTableCell {TD} at (2,34) size 33x30 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderText {#text} at (6,6) size 21x17
index 6380d23..de96c56 100644 (file)
Binary files a/LayoutTests/platform/gtk/editing/deleting/5483370-expected.png and b/LayoutTests/platform/gtk/editing/deleting/5483370-expected.png differ
index 5d58f6a..dce7eb6 100644 (file)
@@ -8,15 +8,15 @@ layer at (0,0) size 800x600
           text run at (0,0) width 706: "This tests for a problem where empty table rows after the selection being deleted would be removed incorrectly. "
           text run at (706,0) width 55: "Only the"
           text run at (0,18) width 343: "last letter in 'foo' should be removed during this delete."
-      RenderBlock {DIV} at (0,52) size 784x34
-        RenderTable {TABLE} at (0,0) size 29x34 [border: (1px outset #808080)]
-          RenderTableSection {TBODY} at (1,1) size 27x32
+      RenderBlock {DIV} at (0,52) size 784x52
+        RenderTable {TABLE} at (0,0) size 29x52 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 27x50
             RenderTableRow {TR} at (0,2) size 27x22
               RenderTableCell {TD} at (2,2) size 17x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 13x17
                   text run at (2,2) width 13: "fo"
-              RenderTableCell {TD} at (21,11) size 4x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-            RenderTableRow {TR} at (0,26) size 27x4
-              RenderTableCell {TD} at (2,26) size 17x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableCell {TD} at (21,26) size 4x4 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              RenderTableCell {TD} at (21,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableRow {TR} at (0,26) size 27x22
+              RenderTableCell {TD} at (2,26) size 17x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (21,26) size 4x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
 caret: position 2 of child 0 {#text} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of body
index 33e8367..e01eab0 100644 (file)
Binary files a/LayoutTests/platform/gtk/editing/selection/move-by-line-001-expected.png and b/LayoutTests/platform/gtk/editing/selection/move-by-line-001-expected.png differ
index 3879a29..2d0c3fd 100644 (file)
@@ -10,18 +10,18 @@ layer 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 {DIV} at (0,0) size 784x192 [border: (2px solid #FF0000)]
-        RenderBlock {DIV} at (14,14) size 756x164
-          RenderTable {TABLE} at (0,0) size 64x164 [border: (1px outset #808080)]
-            RenderTableSection {TBODY} at (1,1) size 62x162
+      RenderBlock {DIV} at (0,0) size 784x197 [border: (2px solid #FF0000)]
+        RenderBlock {DIV} at (14,14) size 756x169
+          RenderTable {TABLE} at (0,0) size 64x169 [border: (1px outset #808080)]
+            RenderTableSection {TBODY} at (1,1) size 62x167
               RenderTableRow {TR} at (0,2) size 62x53
                 RenderTableCell {TD} at (2,2) size 58x53 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                   RenderText {#text} at (13,13) size 32x26
                     text run at (13,13) width 32: "foo"
-              RenderTableRow {TR} at (0,57) size 62x48
-                RenderTableCell {TD} at (2,68) size 58x26 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableRow {TR} at (0,107) size 62x53
-                RenderTableCell {TD} at (2,107) size 58x53 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+              RenderTableRow {TR} at (0,57) size 62x53
+                RenderTableCell {TD} at (2,57) size 58x53 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableRow {TR} at (0,112) size 62x53
+                RenderTableCell {TD} at (2,112) size 58x53 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                   RenderText {#text} at (13,13) size 31x26
                     text run at (13,13) width 31: "bar"
 caret: position 2 of child 1 {TABLE} of child 1 {DIV} of child 1 {DIV} of body
index 8a8f0cb..6ec0d09 100644 (file)
@@ -12,13 +12,13 @@ layer at (0,0) size 800x600
         RenderTable {TABLE} at (0,0) size 16x30 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 14x28
             RenderTableRow {TR} at (0,2) size 14x24
-              RenderTableCell {TD} at (2,12) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 4x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x19
         RenderTable {TABLE} at (0,30) size 359x30 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 357x28
             RenderTableRow {TR} at (0,2) size 357x24
-              RenderTableCell {TD} at (2,12) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 347x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 343x19
                   text run at (2,2) width 343: "There should be one empty cell to the left of this one."
index cd03b6b..b6936f5 100644 (file)
@@ -21,12 +21,9 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (16,2) size 4x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (22,2) size 12x24 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
             RenderTableRow {TR} at (0,28) size 36x24
               RenderTableCell {TD} at (2,28) size 12x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (16,28) size 4x24 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (22,28) size 12x24 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x19
                   text run at (2,2) width 8: "9"
@@ -50,9 +47,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,28) size 12x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (16,28) size 12x24 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (30,28) size 12x24 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
             RenderTableRow {TR} at (0,54) size 44x24
               RenderTableCell {TD} at (2,54) size 12x24 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x19
@@ -75,9 +70,7 @@ layer at (0,0) size 800x600
           RenderTableSection {TBODY} at (1,1) size 44x54
             RenderTableRow {TR} at (0,2) size 44x24
               RenderTableCell {TD} at (2,2) size 12x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (16,2) size 12x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x19
               RenderTableCell {TD} at (30,2) size 12x24 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x19
                   text run at (2,2) width 8: "6"
index 3a5ebab..a49682a 100644 (file)
@@ -15,9 +15,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,2) size 34x32 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderBR {BR} at (6,6) size 0x19
               RenderTableCell {TD} at (37,2) size 33x32 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x19
               RenderTableCell {TD} at (71,2) size 35x32 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x19
             RenderTableRow {TR} at (0,36) size 108x32
               RenderTableCell {TD} at (2,36) size 34x32 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderText {#text} at (6,6) size 22x19
index 14b51b1..d0a8205 100644 (file)
@@ -8,15 +8,15 @@ layer at (0,0) size 800x600
           text run at (0,0) width 721: "This tests for a problem where empty table rows after the selection being deleted would be removed incorrectly. "
           text run at (720,0) width 56: "Only the"
           text run at (0,20) width 352: "last letter in 'foo' should be removed during this delete."
-      RenderBlock {DIV} at (0,56) size 784x36
-        RenderTable {TABLE} at (0,0) size 30x36 [border: (1px outset #808080)]
-          RenderTableSection {TBODY} at (1,1) size 28x34
+      RenderBlock {DIV} at (0,56) size 784x56
+        RenderTable {TABLE} at (0,0) size 30x56 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 28x54
             RenderTableRow {TR} at (0,2) size 28x24
               RenderTableCell {TD} at (2,2) size 18x24 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 14x19
                   text run at (2,2) width 14: "fo"
-              RenderTableCell {TD} at (21,12) size 5x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-            RenderTableRow {TR} at (0,28) size 28x4
-              RenderTableCell {TD} at (2,28) size 18x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableCell {TD} at (21,28) size 5x4 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              RenderTableCell {TD} at (21,2) size 5x24 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableRow {TR} at (0,28) size 28x24
+              RenderTableCell {TD} at (2,28) size 18x24 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (21,28) size 5x24 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
 caret: position 2 of child 0 {#text} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of body
index 9439a99..8de6590 100644 (file)
Binary files a/LayoutTests/platform/mac/editing/deleting/5126166-expected.png and b/LayoutTests/platform/mac/editing/deleting/5126166-expected.png differ
index 205348e..3709ee6 100644 (file)
@@ -12,13 +12,13 @@ layer at (0,0) size 800x600
         RenderTable {TABLE} at (0,0) size 16x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 14x26
             RenderTableRow {TR} at (0,2) size 14x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
         RenderTable {TABLE} at (0,28) size 359x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 357x26
             RenderTableRow {TR} at (0,2) size 357x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 347x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 343x18
                   text run at (2,2) width 343: "There should be one empty cell to the left of this one."
index 257c78a..35e2683 100644 (file)
Binary files a/LayoutTests/platform/mac/editing/deleting/5206311-1-expected.png and b/LayoutTests/platform/mac/editing/deleting/5206311-1-expected.png differ
index 2db1779..86ef863 100644 (file)
@@ -21,12 +21,9 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (16,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (22,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
             RenderTableRow {TR} at (0,26) size 36x22
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,26) size 4x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (22,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
                   text run at (2,2) width 8: "9"
@@ -50,9 +47,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,26) size 12x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (30,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
             RenderTableRow {TR} at (0,50) size 44x22
               RenderTableCell {TD} at (2,50) size 12x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
@@ -75,9 +70,7 @@ layer at (0,0) size 800x600
           RenderTableSection {TBODY} at (1,1) size 44x50
             RenderTableRow {TR} at (0,2) size 44x22
               RenderTableCell {TD} at (2,2) size 12x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (30,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
                   text run at (2,2) width 8: "6"
index 7c0e923..8b31863 100644 (file)
Binary files a/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png and b/LayoutTests/platform/mac/editing/deleting/5433862-2-expected.png differ
index 82d4490..e2a2754 100644 (file)
@@ -15,9 +15,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,2) size 34x30 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderBR {BR} at (6,6) size 0x18
               RenderTableCell {TD} at (37,2) size 33x30 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x18
               RenderTableCell {TD} at (71,2) size 35x30 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x18
             RenderTableRow {TR} at (0,34) size 108x30
               RenderTableCell {TD} at (2,34) size 34x30 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderText {#text} at (6,6) size 22x18
index 3c5a454..a15e19a 100644 (file)
Binary files a/LayoutTests/platform/mac/editing/deleting/5483370-expected.png and b/LayoutTests/platform/mac/editing/deleting/5483370-expected.png differ
index 064f1ac..9edd904 100644 (file)
@@ -8,15 +8,15 @@ layer at (0,0) size 800x600
           text run at (0,0) width 721: "This tests for a problem where empty table rows after the selection being deleted would be removed incorrectly. "
           text run at (720,0) width 56: "Only the"
           text run at (0,18) width 352: "last letter in 'foo' should be removed during this delete."
-      RenderBlock {DIV} at (0,52) size 784x34
-        RenderTable {TABLE} at (0,0) size 30x34 [border: (1px outset #808080)]
-          RenderTableSection {TBODY} at (1,1) size 28x32
+      RenderBlock {DIV} at (0,52) size 784x52
+        RenderTable {TABLE} at (0,0) size 30x52 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 28x50
             RenderTableRow {TR} at (0,2) size 28x22
               RenderTableCell {TD} at (2,2) size 18x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 14x18
                   text run at (2,2) width 14: "fo"
-              RenderTableCell {TD} at (21,11) size 5x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-            RenderTableRow {TR} at (0,26) size 28x4
-              RenderTableCell {TD} at (2,26) size 18x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableCell {TD} at (21,26) size 5x4 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              RenderTableCell {TD} at (21,2) size 5x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableRow {TR} at (0,26) size 28x22
+              RenderTableCell {TD} at (2,26) size 18x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (21,26) size 5x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
 caret: position 2 of child 0 {#text} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of body
index 65c7e9d..80fca9d 100644 (file)
@@ -10,18 +10,18 @@ layer 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 {DIV} at (0,0) size 784x194 [border: (2px solid #FF0000)]
-        RenderBlock {DIV} at (14,14) size 756x166
-          RenderTable {TABLE} at (0,0) size 64x166 [border: (1px outset #808080)]
-            RenderTableSection {TBODY} at (1,1) size 62x164
+      RenderBlock {DIV} at (0,0) size 784x200 [border: (2px solid #FF0000)]
+        RenderBlock {DIV} at (14,14) size 756x172
+          RenderTable {TABLE} at (0,0) size 64x172 [border: (1px outset #808080)]
+            RenderTableSection {TBODY} at (1,1) size 62x170
               RenderTableRow {TR} at (0,2) size 62x54
                 RenderTableCell {TD} at (2,2) size 58x54 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                   RenderText {#text} at (13,13) size 32x28
                     text run at (13,13) width 32: "foo"
-              RenderTableRow {TR} at (0,58) size 62x48
-                RenderTableCell {TD} at (2,69) size 58x26 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableRow {TR} at (0,108) size 62x54
-                RenderTableCell {TD} at (2,108) size 58x54 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+              RenderTableRow {TR} at (0,58) size 62x54
+                RenderTableCell {TD} at (2,58) size 58x54 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableRow {TR} at (0,114) size 62x54
+                RenderTableCell {TD} at (2,114) size 58x54 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                   RenderText {#text} at (13,13) size 31x28
                     text run at (13,13) width 31: "bar"
 caret: position 2 of child 1 {TABLE} of child 1 {DIV} of child 1 {DIV} of body
index 3bee36d..0be931b 100644 (file)
@@ -12,11 +12,11 @@ layer at (0,0) size 800x585
       RenderBlock (anonymous) at (74,74) size 600x48
         RenderText {#text} at (0,10) size 54x28
           text run at (0,10) width 54: "Hello"
-      RenderTable {TABLE} at (74,122) size 6x6
-        RenderTableSection {TBODY} at (0,0) size 6x6
-          RenderTableRow {TR} at (0,2) size 6x2
-            RenderTableCell {TD} at (2,2) size 2x2 [r=0 c=0 rs=1 cs=1]
-      RenderBlock (anonymous) at (74,128) size 600x48
+      RenderTable {TABLE} at (74,122) size 6x24
+        RenderTableSection {TBODY} at (0,0) size 6x24
+          RenderTableRow {TR} at (0,2) size 6x20
+            RenderTableCell {TD} at (2,2) size 2x20 [r=0 c=0 rs=1 cs=1]
+      RenderBlock (anonymous) at (74,146) size 600x48
         RenderBR {BR} at (0,10) size 0x28
 selection start: position 1 of child 2 {#text} of body
 selection end:   position 0 of child 5 {BR} of body
diff --git a/LayoutTests/platform/win/editing/deleting/5126166-expected.png b/LayoutTests/platform/win/editing/deleting/5126166-expected.png
new file mode 100644 (file)
index 0000000..fe65a43
Binary files /dev/null and b/LayoutTests/platform/win/editing/deleting/5126166-expected.png differ
index f96e6cc..2c2e3a1 100644 (file)
@@ -12,13 +12,13 @@ layer at (0,0) size 800x600
         RenderTable {TABLE} at (0,0) size 16x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 14x26
             RenderTableRow {TR} at (0,2) size 14x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
         RenderTable {TABLE} at (0,28) size 351x28 [border: (1px outset #808080)]
           RenderTableSection {TBODY} at (1,1) size 349x26
             RenderTableRow {TR} at (0,2) size 349x22
-              RenderTableCell {TD} at (2,11) size 4x4 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (2,2) size 4x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
               RenderTableCell {TD} at (8,2) size 339x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 335x18
                   text run at (2,2) width 335: "There should be one empty cell to the left of this one."
diff --git a/LayoutTests/platform/win/editing/deleting/5206311-1-expected.png b/LayoutTests/platform/win/editing/deleting/5206311-1-expected.png
new file mode 100644 (file)
index 0000000..b6282f3
Binary files /dev/null and b/LayoutTests/platform/win/editing/deleting/5206311-1-expected.png differ
index 1f6eac7..e13bfac 100644 (file)
@@ -21,12 +21,9 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (16,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (22,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
             RenderTableRow {TR} at (0,26) size 36x22
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,26) size 4x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (22,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
                   text run at (2,2) width 8: "9"
@@ -50,9 +47,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,26) size 12x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,26) size 12x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (30,26) size 12x22 [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
             RenderTableRow {TR} at (0,50) size 44x22
               RenderTableCell {TD} at (2,50) size 12x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
@@ -75,9 +70,7 @@ layer at (0,0) size 800x600
           RenderTableSection {TBODY} at (1,1) size 44x50
             RenderTableRow {TR} at (0,2) size 44x22
               RenderTableCell {TD} at (2,2) size 12x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (16,2) size 12x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (2,2) size 0x18
               RenderTableCell {TD} at (30,2) size 12x22 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 8x18
                   text run at (2,2) width 8: "6"
diff --git a/LayoutTests/platform/win/editing/deleting/5433862-2-expected.png b/LayoutTests/platform/win/editing/deleting/5433862-2-expected.png
new file mode 100644 (file)
index 0000000..1780a05
Binary files /dev/null and b/LayoutTests/platform/win/editing/deleting/5433862-2-expected.png differ
index ab62a4a..82868ef 100644 (file)
@@ -15,9 +15,7 @@ layer at (0,0) size 800x600
               RenderTableCell {TD} at (2,2) size 33x30 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderBR {BR} at (6,6) size 0x18
               RenderTableCell {TD} at (37,2) size 32x30 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x18
               RenderTableCell {TD} at (71,2) size 34x30 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
-                RenderBR {BR} at (6,6) size 0x18
             RenderTableRow {TR} at (0,34) size 107x30
               RenderTableCell {TD} at (2,34) size 33x30 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
                 RenderText {#text} at (6,6) size 21x18
diff --git a/LayoutTests/platform/win/editing/deleting/5483370-expected.png b/LayoutTests/platform/win/editing/deleting/5483370-expected.png
new file mode 100644 (file)
index 0000000..fbe4fc2
Binary files /dev/null and b/LayoutTests/platform/win/editing/deleting/5483370-expected.png differ
index 2e1ecd7..5b5ef02 100644 (file)
@@ -8,15 +8,15 @@ layer at (0,0) size 800x600
           text run at (0,0) width 706: "This tests for a problem where empty table rows after the selection being deleted would be removed incorrectly. "
           text run at (706,0) width 55: "Only the"
           text run at (0,18) width 343: "last letter in 'foo' should be removed during this delete."
-      RenderBlock {DIV} at (0,52) size 784x34
-        RenderTable {TABLE} at (0,0) size 29x34 [border: (1px outset #808080)]
-          RenderTableSection {TBODY} at (1,1) size 27x32
+      RenderBlock {DIV} at (0,52) size 784x52
+        RenderTable {TABLE} at (0,0) size 29x52 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 27x50
             RenderTableRow {TR} at (0,2) size 27x22
               RenderTableCell {TD} at (2,2) size 17x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
                 RenderText {#text} at (2,2) size 13x18
                   text run at (2,2) width 13: "fo"
-              RenderTableCell {TD} at (21,11) size 4x4 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
-            RenderTableRow {TR} at (0,26) size 27x4
-              RenderTableCell {TD} at (2,26) size 17x4 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
-              RenderTableCell {TD} at (21,26) size 4x4 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+              RenderTableCell {TD} at (21,2) size 4x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+            RenderTableRow {TR} at (0,26) size 27x22
+              RenderTableCell {TD} at (2,26) size 17x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+              RenderTableCell {TD} at (21,26) size 4x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
 caret: position 2 of child 0 {#text} of child 0 {TD} of child 0 {TR} of child 0 {TBODY} of child 0 {TABLE} of child 2 {DIV} of body
index f06962a..77d4a6c 100644 (file)
@@ -1,3 +1,28 @@
+2018-04-19  Manuel Rego Casasnovas  <rego@igalia.com>
+
+        Caret rendered at incorrect location inside empty table cell
+        https://bugs.webkit.org/show_bug.cgi?id=85385
+
+        Reviewed by Zalan Bujtas.
+
+        This is based on a previous patch by Shezan Baig <shezbaig.wk@gmail.com>.
+
+        This fixes the position of the caret in empty cells,
+        that was painted lower than expected
+        (and then modified when you start to edit the cell).
+
+        Ensures that editable table cells have at least one line when
+        they are laid out. This ensures that the cell's intrinsic before/after
+        padding is calculated correctly, which results in the caret location
+        being calculated correctly.
+
+        Test: editing/caret/caret-in-empty-cell.html
+
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::hasLineIfEmpty): Override method to consider
+        that it has an an empty line if the table cell is editable.
+        * rendering/RenderTableCell.h:
+
 2018-04-18  Daniel Bates  <dabates@apple.com>
 
         Cleanup TextControlInnerElements
index 243ae60..4d27504 100644 (file)
@@ -1380,4 +1380,12 @@ RenderPtr<RenderTableCell> RenderTableCell::createAnonymousWithParentRenderer(co
     return RenderTableCell::createTableCellWithStyle(parent.document(), parent.style());
 }
 
+bool RenderTableCell::hasLineIfEmpty() const
+{
+    if (element() && element()->hasEditableStyle())
+        return true;
+
+    return RenderBlock::hasLineIfEmpty();
+}
+
 } // namespace WebCore
index 3894c4b..dc9c5e1 100644 (file)
@@ -199,6 +199,8 @@ private:
     void nextSibling() const = delete;
     void previousSibling() const = delete;
 
+    bool hasLineIfEmpty() const final;
+
     // Note MSVC will only pack members if they have identical types, hence we use unsigned instead of bool here.
     unsigned m_column : 25;
     unsigned m_cellWidthChanged : 1;