| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) | 3 * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) |
| 4 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | 4 * Copyright (C) 2001 Peter Kelly (pmk@post.com) |
| 5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 } | 63 } |
| 64 | 64 |
| 65 bool NodeIterator::NodePointer::moveToPrevious(Node* root) | 65 bool NodeIterator::NodePointer::moveToPrevious(Node* root) |
| 66 { | 66 { |
| 67 if (!node) | 67 if (!node) |
| 68 return false; | 68 return false; |
| 69 if (!isPointerBeforeNode) { | 69 if (!isPointerBeforeNode) { |
| 70 isPointerBeforeNode = true; | 70 isPointerBeforeNode = true; |
| 71 return true; | 71 return true; |
| 72 } | 72 } |
| 73 node = NodeTraversal::previous(node.get(), root); | 73 node = NodeTraversal::previous(*node, root); |
| 74 return node; | 74 return node; |
| 75 } | 75 } |
| 76 | 76 |
| 77 NodeIterator::NodeIterator(PassRefPtr<Node> rootNode, unsigned whatToShow, PassR
efPtr<NodeFilter> filter) | 77 NodeIterator::NodeIterator(PassRefPtr<Node> rootNode, unsigned whatToShow, PassR
efPtr<NodeFilter> filter) |
| 78 : Traversal(rootNode, whatToShow, filter) | 78 : Traversal(rootNode, whatToShow, filter) |
| 79 , m_referenceNode(root(), true) | 79 , m_referenceNode(root(), true) |
| 80 , m_detached(false) | 80 , m_detached(false) |
| 81 { | 81 { |
| 82 ScriptWrappable::init(this); | 82 ScriptWrappable::init(this); |
| 83 root()->document().attachNodeIterator(this); | 83 root()->document().attachNodeIterator(this); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 if (referenceNode.isPointerBeforeNode) { | 176 if (referenceNode.isPointerBeforeNode) { |
| 177 Node* node = NodeTraversal::next(removedNode, root()); | 177 Node* node = NodeTraversal::next(removedNode, root()); |
| 178 if (node) { | 178 if (node) { |
| 179 // Move out from under the node being removed if the new reference | 179 // Move out from under the node being removed if the new reference |
| 180 // node is a descendant of the node being removed. | 180 // node is a descendant of the node being removed. |
| 181 while (node && node->isDescendantOf(&removedNode)) | 181 while (node && node->isDescendantOf(&removedNode)) |
| 182 node = NodeTraversal::next(*node, root()); | 182 node = NodeTraversal::next(*node, root()); |
| 183 if (node) | 183 if (node) |
| 184 referenceNode.node = node; | 184 referenceNode.node = node; |
| 185 } else { | 185 } else { |
| 186 node = NodeTraversal::previous(&removedNode, root()); | 186 node = NodeTraversal::previous(removedNode, root()); |
| 187 if (node) { | 187 if (node) { |
| 188 // Move out from under the node being removed if the reference n
ode is | 188 // Move out from under the node being removed if the reference n
ode is |
| 189 // a descendant of the node being removed. | 189 // a descendant of the node being removed. |
| 190 if (willRemoveReferenceNodeAncestor) { | 190 if (willRemoveReferenceNodeAncestor) { |
| 191 while (node && node->isDescendantOf(&removedNode)) | 191 while (node && node->isDescendantOf(&removedNode)) |
| 192 node = NodeTraversal::previous(node, root()); | 192 node = NodeTraversal::previous(*node, root()); |
| 193 } | 193 } |
| 194 if (node) { | 194 if (node) { |
| 195 // Removing last node. | 195 // Removing last node. |
| 196 // Need to move the pointer after the node preceding the | 196 // Need to move the pointer after the node preceding the |
| 197 // new reference node. | 197 // new reference node. |
| 198 referenceNode.node = node; | 198 referenceNode.node = node; |
| 199 referenceNode.isPointerBeforeNode = false; | 199 referenceNode.isPointerBeforeNode = false; |
| 200 } | 200 } |
| 201 } | 201 } |
| 202 } | 202 } |
| 203 } else { | 203 } else { |
| 204 Node* node = NodeTraversal::previous(&removedNode, root()); | 204 Node* node = NodeTraversal::previous(removedNode, root()); |
| 205 if (node) { | 205 if (node) { |
| 206 // Move out from under the node being removed if the reference node
is | 206 // Move out from under the node being removed if the reference node
is |
| 207 // a descendant of the node being removed. | 207 // a descendant of the node being removed. |
| 208 if (willRemoveReferenceNodeAncestor) { | 208 if (willRemoveReferenceNodeAncestor) { |
| 209 while (node && node->isDescendantOf(&removedNode)) | 209 while (node && node->isDescendantOf(&removedNode)) |
| 210 node = NodeTraversal::previous(node, root()); | 210 node = NodeTraversal::previous(*node, root()); |
| 211 } | 211 } |
| 212 if (node) | 212 if (node) |
| 213 referenceNode.node = node; | 213 referenceNode.node = node; |
| 214 } else { | 214 } else { |
| 215 // FIXME: This branch doesn't appear to have any LayoutTests. | 215 // FIXME: This branch doesn't appear to have any LayoutTests. |
| 216 node = NodeTraversal::next(removedNode, root()); | 216 node = NodeTraversal::next(removedNode, root()); |
| 217 // Move out from under the node being removed if the reference node
is | 217 // Move out from under the node being removed if the reference node
is |
| 218 // a descendant of the node being removed. | 218 // a descendant of the node being removed. |
| 219 if (willRemoveReferenceNodeAncestor) { | 219 if (willRemoveReferenceNodeAncestor) { |
| 220 while (node && node->isDescendantOf(&removedNode)) | 220 while (node && node->isDescendantOf(&removedNode)) |
| 221 node = NodeTraversal::previous(node, root()); | 221 node = NodeTraversal::previous(*node, root()); |
| 222 } | 222 } |
| 223 if (node) | 223 if (node) |
| 224 referenceNode.node = node; | 224 referenceNode.node = node; |
| 225 } | 225 } |
| 226 } | 226 } |
| 227 } | 227 } |
| 228 | 228 |
| 229 | 229 |
| 230 } // namespace WebCore | 230 } // namespace WebCore |
| OLD | NEW |