Title: [117813] trunk/Source/WebCore
Revision
117813
Author
[email protected]
Date
2012-05-21 13:52:31 -0700 (Mon, 21 May 2012)

Log Message

isStartOfDocument and isEndOfDocument are poorly named
https://bugs.webkit.org/show_bug.cgi?id=86649

Reviewed by Levi Weintraub.

Renamed isEndOfDocument to isEndOfEditableOrNonEditableContent because that's what this function checks.

Also added new versions of isStartOfDocument and isEndOfDocument that correctly cross editing boundaries
to be used in selectFrameElementInParentIfFullySelected.

* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
* editing/Editor.cpp:
(WebCore::Editor::insertLineBreak):
(WebCore::Editor::insertParagraphSeparator):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::doApply):
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity):
* editing/visible_units.cpp:
(WebCore::isEndOfEditableOrNonEditableContent):
* editing/visible_units.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (117812 => 117813)


--- trunk/Source/WebCore/ChangeLog	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/ChangeLog	2012-05-21 20:52:31 UTC (rev 117813)
@@ -1,3 +1,28 @@
+2012-05-21  Ryosuke Niwa  <[email protected]>
+
+        isStartOfDocument and isEndOfDocument are poorly named
+        https://bugs.webkit.org/show_bug.cgi?id=86649
+
+        Reviewed by Levi Weintraub.
+
+        Renamed isEndOfDocument to isEndOfEditableOrNonEditableContent because that's what this function checks.
+
+        Also added new versions of isStartOfDocument and isEndOfDocument that correctly cross editing boundaries
+        to be used in selectFrameElementInParentIfFullySelected.
+
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
+        * editing/Editor.cpp:
+        (WebCore::Editor::insertLineBreak):
+        (WebCore::Editor::insertParagraphSeparator):
+        * editing/ReplaceSelectionCommand.cpp:
+        (WebCore::ReplaceSelectionCommand::doApply):
+        * editing/VisibleSelection.cpp:
+        (WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity):
+        * editing/visible_units.cpp:
+        (WebCore::isEndOfEditableOrNonEditableContent):
+        * editing/visible_units.h:
+
 2012-05-21 Anna Cavender  <[email protected]>
 
         Only render text track cues if kind=captions or kind=subtitles.

Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (117812 => 117813)


--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp	2012-05-21 20:52:31 UTC (rev 117813)
@@ -929,8 +929,8 @@
             // We can bail as we have a full block to work with.
             ASSERT(upstreamStart.deprecatedNode()->isDescendantOf(enclosingBlock(upstreamEnd.deprecatedNode())));
             return 0;
-        } else if (isEndOfDocument(visibleEnd)) {
-            // At the end of the document. We can bail here as well.
+        } else if (isEndOfEditableOrNonEditableContent(visibleEnd)) {
+            // At the end of the editable region. We can bail here as well.
             return 0;
         }
     }

Modified: trunk/Source/WebCore/editing/Editor.cpp (117812 => 117813)


--- trunk/Source/WebCore/editing/Editor.cpp	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/Editor.cpp	2012-05-21 20:52:31 UTC (rev 117813)
@@ -946,7 +946,7 @@
         return true;
 
     VisiblePosition caret = m_frame->selection()->selection().visibleStart();
-    bool alignToEdge = isEndOfDocument(caret);
+    bool alignToEdge = isEndOfEditableOrNonEditableContent(caret);
     bool autocorrectionIsApplied = m_alternativeTextController->applyAutocorrectionBeforeTypingIfAppropriate();
     TypingCommand::insertLineBreak(m_frame->document(), autocorrectionIsApplied ? TypingCommand::RetainAutocorrectionIndicator : 0);
     revealSelectionAfterEditingOperation(alignToEdge ? ScrollAlignment::alignToEdgeIfNeeded : ScrollAlignment::alignCenterIfNeeded);
@@ -966,7 +966,7 @@
         return true;
 
     VisiblePosition caret = m_frame->selection()->selection().visibleStart();
-    bool alignToEdge = isEndOfDocument(caret);
+    bool alignToEdge = isEndOfEditableOrNonEditableContent(caret);
     bool autocorrectionIsApplied = m_alternativeTextController->applyAutocorrectionBeforeTypingIfAppropriate();
     TypingCommand::insertParagraphSeparator(m_frame->document(), autocorrectionIsApplied ? TypingCommand::RetainAutocorrectionIndicator : 0);
     revealSelectionAfterEditingOperation(alignToEdge ? ScrollAlignment::alignToEdgeIfNeeded : ScrollAlignment::alignCenterIfNeeded);

Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (117812 => 117813)


--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp	2012-05-21 20:52:31 UTC (rev 117813)
@@ -830,7 +830,7 @@
         visibleStart = endingSelection().visibleStart();
         if (fragment.hasInterchangeNewlineAtStart()) {
             if (isEndOfParagraph(visibleStart) && !isStartOfParagraph(visibleStart)) {
-                if (!isEndOfDocument(visibleStart))
+                if (!isEndOfEditableOrNonEditableContent(visibleStart))
                     setEndingSelection(visibleStart.next());
             } else
                 insertParagraphSeparator();

Modified: trunk/Source/WebCore/editing/VisibleSelection.cpp (117812 => 117813)


--- trunk/Source/WebCore/editing/VisibleSelection.cpp	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/VisibleSelection.cpp	2012-05-21 20:52:31 UTC (rev 117813)
@@ -293,11 +293,11 @@
             VisiblePosition start = VisiblePosition(m_start, m_affinity);
             VisiblePosition originalEnd(m_end, m_affinity);
             EWordSide side = RightWordIfOnBoundary;
-            if (isEndOfDocument(start) || (isEndOfLine(start) && !isStartOfLine(start) && !isEndOfParagraph(start)))
+            if (isEndOfEditableOrNonEditableContent(start) || (isEndOfLine(start) && !isStartOfLine(start) && !isEndOfParagraph(start)))
                 side = LeftWordIfOnBoundary;
             m_start = startOfWord(start, side).deepEquivalent();
             side = RightWordIfOnBoundary;
-            if (isEndOfDocument(originalEnd) || (isEndOfLine(originalEnd) && !isStartOfLine(originalEnd) && !isEndOfParagraph(originalEnd)))
+            if (isEndOfEditableOrNonEditableContent(originalEnd) || (isEndOfLine(originalEnd) && !isStartOfLine(originalEnd) && !isEndOfParagraph(originalEnd)))
                 side = LeftWordIfOnBoundary;
                 
             VisiblePosition wordEnd(endOfWord(originalEnd, side));
@@ -349,7 +349,7 @@
             break;
         case ParagraphGranularity: {
             VisiblePosition pos(m_start, m_affinity);
-            if (isStartOfLine(pos) && isEndOfDocument(pos))
+            if (isStartOfLine(pos) && isEndOfEditableOrNonEditableContent(pos))
                 pos = pos.previous();
             m_start = startOfParagraph(pos).deepEquivalent();
             VisiblePosition visibleParagraphEnd = endOfParagraph(VisiblePosition(m_end, m_affinity));

Modified: trunk/Source/WebCore/editing/visible_units.cpp (117812 => 117813)


--- trunk/Source/WebCore/editing/visible_units.cpp	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/visible_units.cpp	2012-05-21 20:52:31 UTC (rev 117813)
@@ -1369,12 +1369,12 @@
 
 bool isStartOfDocument(const VisiblePosition &p)
 {
-    return p.isNotNull() && p.previous().isNull();
+    return p.isNotNull() && p.previous(CanCrossEditingBoundary).isNull();
 }
 
 bool isEndOfDocument(const VisiblePosition &p)
 {
-    return p.isNotNull() && p.next().isNull();
+    return p.isNotNull() && p.next(CanCrossEditingBoundary).isNull();
 }
 
 // ---------
@@ -1397,6 +1397,11 @@
     return lastPositionInNode(highestRoot);
 }
 
+bool isEndOfEditableOrNonEditableContent(const VisiblePosition &p)
+{
+    return p.isNotNull() && p.next().isNull();
+}
+
 VisiblePosition leftBoundaryOfLine(const VisiblePosition& c, TextDirection direction)
 {
     return direction == LTR ? logicalStartOfLine(c) : logicalEndOfLine(c);

Modified: trunk/Source/WebCore/editing/visible_units.h (117812 => 117813)


--- trunk/Source/WebCore/editing/visible_units.h	2012-05-21 20:48:22 UTC (rev 117812)
+++ trunk/Source/WebCore/editing/visible_units.h	2012-05-21 20:52:31 UTC (rev 117813)
@@ -94,6 +94,7 @@
 // editable content
 VisiblePosition startOfEditableContent(const VisiblePosition&);
 VisiblePosition endOfEditableContent(const VisiblePosition&);
+bool isEndOfEditableOrNonEditableContent(const VisiblePosition&);
 
 } // namespace WebCore
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to