Reviewed by Chris
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Dec 2004 21:10:35 +0000 (21:10 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 10 Dec 2004 21:10:35 +0000 (21:10 +0000)
        * khtml/editing/htmlediting.cpp:
        (khtml::InsertParagraphSeparatorCommand::doApply): There is a starting block which is supposed to
        act as the root node for this operation. However, a loop was incorrectly coded, and a parent node
        search could escape this node. Also, one other piece to code to move nodes to the new <p> element
        should do nothing if the starting point for the selection is itself the starting block.
        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Similar changes, in spirit, to the above
        function, though the names and concepts are slightly different.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/editing/htmlediting.cpp

index 4b624355a4fc1acd68efd172ca7dbf3b683c77e4..9eb1d7971383e42c040c5edd57a7474c1fe30793 100644 (file)
@@ -1,3 +1,15 @@
+2004-12-10  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertParagraphSeparatorCommand::doApply): There is a starting block which is supposed to 
+        act as the root node for this operation. However, a loop was incorrectly coded, and a parent node
+        search could escape this node. Also, one other piece to code to move nodes to the new <p> element
+        should do nothing if the starting point for the selection is itself the starting block.
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Similar changes, in spirit, to the above
+        function, though the names and concepts are slightly different.
+
 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Ken.
index 3e4b332544f880d6964bbba032a8443ce6863264..a18a607080109a97b49f18c1682e8af5d46bcffd 100644 (file)
@@ -2190,8 +2190,10 @@ void InsertParagraphSeparatorCommand::doApply()
         return;
 
     // Build up list of ancestors in between the start node and the start block.
-    for (NodeImpl *n = startNode->parentNode(); n && n != startBlock; n = n->parentNode())
-        ancestors.prepend(n);
+    if (startNode != startBlock) {
+        for (NodeImpl *n = startNode->parentNode(); n && n != startBlock; n = n->parentNode())
+            ancestors.prepend(n);
+    }
 
     // Make new block to represent the newline.
     // If the start block is the body, just make a P tag, otherwise, make a shallow clone
@@ -2244,16 +2246,18 @@ void InsertParagraphSeparatorCommand::doApply()
         }
 
         // Move the start node and the siblings of the start node.
-        NodeImpl *n = startNode;
-        if (n->id() == ID_BR)
-            n = n->nextSibling();
-        while (n && n != addedBlock) {
-            NodeImpl *next = n->nextSibling();
-            removeNode(n);
-            appendNode(n, parent);
-            n = next;
-        }
-        
+        if (startNode != startBlock) {
+            NodeImpl *n = startNode;
+            if (n->id() == ID_BR)
+                n = n->nextSibling();
+            while (n && n != addedBlock) {
+                NodeImpl *next = n->nextSibling();
+                removeNode(n);
+                appendNode(n, parent);
+                n = next;
+            }
+        }            
+
         // Move everything after the start node.
         NodeImpl *leftParent = ancestors.last();
         while (leftParent && leftParent != startBlock) {
@@ -2321,8 +2325,10 @@ void InsertParagraphSeparatorInQuotedContentCommand::doApply()
         return;
 
     // Build up list of ancestors in between the start node and the top blockquote.
-    for (NodeImpl *n = startNode->parentNode(); n && n != topBlockquote; n = n->parentNode())
-        ancestors.prepend(n);
+    if (startNode != topBlockquote) {
+        for (NodeImpl *n = startNode->parentNode(); n && n != topBlockquote; n = n->parentNode())
+            ancestors.prepend(n);
+    }
 
     // Insert a break after the top blockquote.
     int exceptionCode = 0;
@@ -2371,15 +2377,18 @@ void InsertParagraphSeparatorInQuotedContentCommand::doApply()
         }
 
         // Move the start node and the siblings of the start node.
-        NodeImpl *n = startNode;
-        bool startIsBR = n->id() == ID_BR;
-        if (startIsBR)
-            n = n->nextSibling();
-        while (n) {
-            NodeImpl *next = n->nextSibling();
-            removeNode(n);
-            appendNode(n, parent);
-            n = next;
+        bool startIsBR = false;
+        if (startNode != topBlockquote) {
+            NodeImpl *n = startNode;
+            bool startIsBR = n->id() == ID_BR;
+            if (startIsBR)
+                n = n->nextSibling();
+            while (n) {
+                NodeImpl *next = n->nextSibling();
+                removeNode(n);
+                appendNode(n, parent);
+                n = next;
+            }
         }
         
         // Move everything after the start node.