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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } | 51 } |
52 | 52 |
53 bool NodeIterator::NodePointer::moveToNext(Node* root) | 53 bool NodeIterator::NodePointer::moveToNext(Node* root) |
54 { | 54 { |
55 if (!node) | 55 if (!node) |
56 return false; | 56 return false; |
57 if (isPointerBeforeNode) { | 57 if (isPointerBeforeNode) { |
58 isPointerBeforeNode = false; | 58 isPointerBeforeNode = false; |
59 return true; | 59 return true; |
60 } | 60 } |
61 node = NodeTraversal::next(node.get(), root); | 61 node = NodeTraversal::next(*node, root); |
62 return node; | 62 return node; |
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; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 // Iterator is not affected if the removed node is the reference node and is
the root. | 167 // Iterator is not affected if the removed node is the reference node and is
the root. |
168 // or if removed node is not the reference node, or the ancestor of the refe
rence node. | 168 // or if removed node is not the reference node, or the ancestor of the refe
rence node. |
169 if (!removedNode.isDescendantOf(root())) | 169 if (!removedNode.isDescendantOf(root())) |
170 return; | 170 return; |
171 bool willRemoveReferenceNode = removedNode == referenceNode.node; | 171 bool willRemoveReferenceNode = removedNode == referenceNode.node; |
172 bool willRemoveReferenceNodeAncestor = referenceNode.node && referenceNode.n
ode->isDescendantOf(&removedNode); | 172 bool willRemoveReferenceNodeAncestor = referenceNode.node && referenceNode.n
ode->isDescendantOf(&removedNode); |
173 if (!willRemoveReferenceNode && !willRemoveReferenceNodeAncestor) | 173 if (!willRemoveReferenceNode && !willRemoveReferenceNodeAncestor) |
174 return; | 174 return; |
175 | 175 |
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()); |
(...skipping 13 matching lines...) Expand all Loading... |
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 |