OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE; | 120 virtual void setActive(bool active = true, bool pause = false) OVERRIDE; |
121 virtual void setHovered(bool = true) OVERRIDE; | 121 virtual void setHovered(bool = true) OVERRIDE; |
122 | 122 |
123 // ------------------------------------------------------------------------- ---- | 123 // ------------------------------------------------------------------------- ---- |
124 // Notification of document structure changes (see core/dom/Node.h for more notification methods) | 124 // Notification of document structure changes (see core/dom/Node.h for more notification methods) |
125 | 125 |
126 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child | 126 // Notifies the node that it's list of children have changed (either by addi ng or removing child nodes), or a child |
127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value. | 127 // node that is of the type CDATA_SECTION_NODE, TEXT_NODE or COMMENT_NODE ha s changed its value. |
128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang e = 0, Node* afterChange = 0, int childCountDelta = 0); | 128 virtual void childrenChanged(bool createdByParser = false, Node* beforeChang e = 0, Node* afterChange = 0, int childCountDelta = 0); |
129 | 129 |
130 void attachChildren(); | 130 void attachChildren(const AttachContext& = AttachContext()); |
131 void attachChildrenLazily(); | 131 void attachChildrenLazily(); |
132 void detachChildren(); | 132 void detachChildren(const AttachContext& = AttachContext()); |
133 void detachChildrenIfNeeded(); | 133 void detachChildrenIfNeeded(const AttachContext& = AttachContext()); |
134 | 134 |
135 void disconnectDescendantFrames(); | 135 void disconnectDescendantFrames(); |
136 | 136 |
137 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; } | 137 virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const { return true; } |
138 | 138 |
139 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE; | 139 virtual void reportMemoryUsage(MemoryObjectInfo*) const OVERRIDE; |
140 | 140 |
141 protected: | 141 protected: |
142 ContainerNode(TreeScope*, ConstructionType = CreateContainer); | 142 ContainerNode(TreeScope*, ConstructionType = CreateContainer); |
143 | 143 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
189 // This will catch anyone doing an unnecessary cast. | 189 // This will catch anyone doing an unnecessary cast. |
190 void toContainerNode(const ContainerNode*); | 190 void toContainerNode(const ContainerNode*); |
191 | 191 |
192 inline ContainerNode::ContainerNode(TreeScope* treeScope, ConstructionType type) | 192 inline ContainerNode::ContainerNode(TreeScope* treeScope, ConstructionType type) |
193 : Node(treeScope, type) | 193 : Node(treeScope, type) |
194 , m_firstChild(0) | 194 , m_firstChild(0) |
195 , m_lastChild(0) | 195 , m_lastChild(0) |
196 { | 196 { |
197 } | 197 } |
198 | 198 |
199 inline void ContainerNode::attachChildren() | 199 inline void ContainerNode::attachChildren(const AttachContext& context) |
200 { | 200 { |
201 // the resolved style need not be passed to the children, as it represents o nly the parent's style | |
202 AttachContext childrenContext(context); | |
203 childrenContext.resolvedStyle = 0; | |
esprehn
2013/06/13 18:20:42
You should put this inside the constructor to just
stavila
2013/06/13 21:10:06
You mean the copy constructor should set by defaul
| |
204 | |
201 for (Node* child = firstChild(); child; child = child->nextSibling()) { | 205 for (Node* child = firstChild(); child; child = child->nextSibling()) { |
202 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his)); | 206 ASSERT(!child->attached() || childAttachedAllowedWhenAttachingChildren(t his)); |
203 if (!child->attached()) | 207 if (!child->attached()) |
204 child->attach(); | 208 child->attach(childrenContext); |
205 } | 209 } |
206 } | 210 } |
207 | 211 |
208 inline void ContainerNode::attachChildrenLazily() | 212 inline void ContainerNode::attachChildrenLazily() |
209 { | 213 { |
210 for (Node* child = firstChild(); child; child = child->nextSibling()) | 214 for (Node* child = firstChild(); child; child = child->nextSibling()) |
211 if (!child->attached()) | 215 if (!child->attached()) |
212 child->lazyAttach(); | 216 child->lazyAttach(); |
213 } | 217 } |
214 | 218 |
215 inline void ContainerNode::detachChildrenIfNeeded() | 219 inline void ContainerNode::detachChildrenIfNeeded(const AttachContext& context) |
216 { | 220 { |
221 // the resolved style need not be passed to the children, as it represents o nly the parent's style | |
222 AttachContext childrenContext(context); | |
223 childrenContext.resolvedStyle = 0; | |
224 | |
217 for (Node* child = firstChild(); child; child = child->nextSibling()) { | 225 for (Node* child = firstChild(); child; child = child->nextSibling()) { |
218 if (child->attached()) | 226 if (child->attached()) |
219 child->detach(); | 227 child->detach(childrenContext); |
220 } | 228 } |
221 } | 229 } |
222 | 230 |
223 inline void ContainerNode::detachChildren() | 231 inline void ContainerNode::detachChildren(const AttachContext& context) |
224 { | 232 { |
233 // the resolved style need not be passed to the children, as it represents o nly the parent's style | |
234 AttachContext childrenContext(context); | |
esprehn
2013/06/13 18:20:42
Please remove all the comments here, this should b
| |
235 childrenContext.resolvedStyle = 0; | |
236 | |
225 for (Node* child = firstChild(); child; child = child->nextSibling()) | 237 for (Node* child = firstChild(); child; child = child->nextSibling()) |
226 child->detach(); | 238 child->detach(childrenContext); |
227 } | 239 } |
228 | 240 |
229 inline unsigned Node::childNodeCount() const | 241 inline unsigned Node::childNodeCount() const |
230 { | 242 { |
231 if (!isContainerNode()) | 243 if (!isContainerNode()) |
232 return 0; | 244 return 0; |
233 return toContainerNode(this)->childNodeCount(); | 245 return toContainerNode(this)->childNodeCount(); |
234 } | 246 } |
235 | 247 |
236 inline Node* Node::childNode(unsigned index) const | 248 inline Node* Node::childNode(unsigned index) const |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
363 m_node->resumePostAttachCallbacks(); | 375 m_node->resumePostAttachCallbacks(); |
364 } | 376 } |
365 | 377 |
366 private: | 378 private: |
367 ContainerNode* m_node; | 379 ContainerNode* m_node; |
368 }; | 380 }; |
369 | 381 |
370 } // namespace WebCore | 382 } // namespace WebCore |
371 | 383 |
372 #endif // ContainerNode_h | 384 #endif // ContainerNode_h |
OLD | NEW |