Reviewed by darin, harrison
authorjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 11 Mar 2006 01:35:55 +0000 (01:35 +0000)
committerjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 11 Mar 2006 01:35:55 +0000 (01:35 +0000)
        ~3x speedup pasting plain text from the console

        * dom/dom_position.cpp:
        (WebCore::Position::next):
        (WebCore::Position::atEnd):

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

WebCore/ChangeLog
WebCore/dom/dom_position.cpp

index b7848e33a184f304217d259f711d67fd9b5b8820..e0f2005a3b8e613ced7c30e7ba754168a8db1f58 100644 (file)
@@ -1,3 +1,13 @@
+2006-03-10  Justin Garcia  <justin.garcia@apple.com>
+        
+        Reviewed by darin, harrison
+        
+        ~3x speedup pasting plain text from the console
+
+        * dom/dom_position.cpp:
+        (WebCore::Position::next): 
+        (WebCore::Position::atEnd): 
+
 2006-03-10  David Hyatt <hyatt@apple.com>
 
         More refactoring.  Split the FontData into cross-platform and
index 7d5eb55cc6ae314167dd3c6c22a25fd9f858c04a..5bbdf453c3a8085a0ae6888b01fe797608bac2cb 100644 (file)
@@ -144,11 +144,11 @@ Position Position::next(EUsingComposedCharacters usingComposedCharacters) const
     int o = offset();
     assert(o >= 0);
 
-    if (o < maxDeepOffset(n)) {
-        NodeImpl *child = n->childNode(o);
-        if (child) {
+    NodeImpl* child = n->childNode(o);
+    if (child || !n->hasChildNodes() && o < maxDeepOffset(n)) {
+        if (child)
             return Position(child, 0);
-        }
+            
         // There are two reasons child might be 0:
         //   1) The node is node like a text node that is not an element, and therefore has no children.
         //      Going forward one character at a time is correct.
@@ -179,7 +179,7 @@ bool Position::atEnd() const
     if (!n)
         return true;
     
-    return offset() >= maxDeepOffset(n) && n->parent() == 0;
+    return n->parent() == 0 && offset() >= maxDeepOffset(n);
 }
 
 int Position::renderedOffset() const