Title: [98408] trunk
- Revision
- 98408
- Author
- [email protected]
- Date
- 2011-10-25 16:17:59 -0700 (Tue, 25 Oct 2011)
Log Message
Moving to the start of line should not place the caret outside of the table
https://bugs.webkit.org/show_bug.cgi?id=70757
Reviewed by Chang Shu.
Source/WebCore:
The bug was caused by positionAvoidingFirstPositionInTable. Get rid of the function.
Test: editing/selection/table-lineboundary.html
* editing/visible_units.cpp:
(WebCore::startPositionForLine):
LayoutTests:
Added a test to move the caret to lineboundaries in the first and the last table cell.
The caret should remain inside a table cell.
* editing/selection/table-lineboundary-expected.txt: Added.
* editing/selection/table-lineboundary.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (98407 => 98408)
--- trunk/LayoutTests/ChangeLog 2011-10-25 23:10:43 UTC (rev 98407)
+++ trunk/LayoutTests/ChangeLog 2011-10-25 23:17:59 UTC (rev 98408)
@@ -1,3 +1,16 @@
+2011-10-25 Ryosuke Niwa <[email protected]>
+
+ Moving to the start of line should not place the caret outside of the table
+ https://bugs.webkit.org/show_bug.cgi?id=70757
+
+ Reviewed by Chang Shu.
+
+ Added a test to move the caret to lineboundaries in the first and the last table cell.
+ The caret should remain inside a table cell.
+
+ * editing/selection/table-lineboundary-expected.txt: Added.
+ * editing/selection/table-lineboundary.html: Added.
+
2011-10-25 Erik Arvidsson <[email protected]>
JS Test Harness: Make successfullyParsed optional
Added: trunk/LayoutTests/editing/selection/table-lineboundary-expected.txt (0 => 98408)
--- trunk/LayoutTests/editing/selection/table-lineboundary-expected.txt (rev 0)
+++ trunk/LayoutTests/editing/selection/table-lineboundary-expected.txt 2011-10-25 23:17:59 UTC (rev 98408)
@@ -0,0 +1,3 @@
+This tests moving to line boundaries in the first or the last table cell, and types "h" and "d" respectively. You should see "hello" and "world" in the first and the second table cell respectively.
+
+PASS
Added: trunk/LayoutTests/editing/selection/table-lineboundary.html (0 => 98408)
--- trunk/LayoutTests/editing/selection/table-lineboundary.html (rev 0)
+++ trunk/LayoutTests/editing/selection/table-lineboundary.html 2011-10-25 23:17:59 UTC (rev 98408)
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style type="text/css">
+table, td { border: solid 2px red; border-collapse: collapse; }
+</style>
+</head>
+<body>
+<p id="description">This tests moving to line boundaries in the first or the last table cell, and types "h" and "d" respectively.
+You should see "hello" and "world" in the first and the second table cell respectively.</p>
+<div id="container" contentEditable="true">a<table><tr><td id="target">ello</td><td>worl</td></tr></table>b</div>
+<script>
+
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+var target = document.getElementById('target');
+getSelection().collapse(target.firstChild, 2);
+getSelection().modify('Move', 'Backward', 'LineBoundary');
+document.execCommand('InsertText', false, 'h');
+
+getSelection().collapse(target.nextSibling.firstChild, 2);
+getSelection().modify('Move', 'Forward', 'LineBoundary');
+document.execCommand('InsertText', false, 'd');
+
+document.writeln(target.parentNode.textContent == 'helloworld' ? 'PASS' : 'FAIL');
+if (window.layoutTestController)
+ document.getElementById('container').style.display = 'none';
+
+</script>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (98407 => 98408)
--- trunk/Source/WebCore/ChangeLog 2011-10-25 23:10:43 UTC (rev 98407)
+++ trunk/Source/WebCore/ChangeLog 2011-10-25 23:17:59 UTC (rev 98408)
@@ -1,3 +1,17 @@
+2011-10-25 Ryosuke Niwa <[email protected]>
+
+ Moving to the start of line should not place the caret outside of the table
+ https://bugs.webkit.org/show_bug.cgi?id=70757
+
+ Reviewed by Chang Shu.
+
+ The bug was caused by positionAvoidingFirstPositionInTable. Get rid of the function.
+
+ Test: editing/selection/table-lineboundary.html
+
+ * editing/visible_units.cpp:
+ (WebCore::startPositionForLine):
+
2011-10-25 Beth Dakin <[email protected]>
https://bugs.webkit.org/show_bug.cgi?id=70852
Modified: trunk/Source/WebCore/editing/visible_units.cpp (98407 => 98408)
--- trunk/Source/WebCore/editing/visible_units.cpp 2011-10-25 23:10:43 UTC (rev 98407)
+++ trunk/Source/WebCore/editing/visible_units.cpp 2011-10-25 23:17:59 UTC (rev 98408)
@@ -318,17 +318,6 @@
// ---------
-static VisiblePosition positionAvoidingFirstPositionInTable(const VisiblePosition& c)
-{
- // return table offset 0 instead of the first VisiblePosition inside the table
- VisiblePosition previous = c.previous();
- if (isLastPositionBeforeTable(previous) && isEditablePosition(previous.deepEquivalent()))
- return previous;
-
- return c;
-}
-
-
enum LineEndpointComputationMode { UseLogicalOrdering, UseInlineBoxOrdering };
static VisiblePosition startPositionForLine(const VisiblePosition& c, LineEndpointComputationMode mode)
{
@@ -341,8 +330,8 @@
// RootInlineBoxes, like empty editable blocks and bordered blocks.
Position p = c.deepEquivalent();
if (p.deprecatedNode()->renderer() && p.deprecatedNode()->renderer()->isRenderBlock() && !p.deprecatedEditingOffset())
- return positionAvoidingFirstPositionInTable(c);
-
+ return c;
+
return VisiblePosition();
}
@@ -372,9 +361,8 @@
}
}
- if (startNode->isTextNode())
- return positionAvoidingFirstPositionInTable(Position(static_cast<Text*>(startNode), toInlineTextBox(startBox)->start()));
- return positionAvoidingFirstPositionInTable(positionBeforeNode(startNode));
+ return startNode->isTextNode() ? Position(static_cast<Text*>(startNode), toInlineTextBox(startBox)->start())
+ : positionBeforeNode(startNode);
}
static VisiblePosition startOfLine(const VisiblePosition& c, LineEndpointComputationMode mode)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes