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, 2013 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2013 Apple Inc. All r
ights 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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 148 |
149 bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFl
ag(ChildrenAffectedByBackwardPositionalRules); } | 149 bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFl
ag(ChildrenAffectedByBackwardPositionalRules); } |
150 void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(Childre
nAffectedByBackwardPositionalRules); } | 150 void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(Childre
nAffectedByBackwardPositionalRules); } |
151 | 151 |
152 bool affectedByFirstChildRules() const { return hasRestyleFlag(AffectedByFir
stChildRules); } | 152 bool affectedByFirstChildRules() const { return hasRestyleFlag(AffectedByFir
stChildRules); } |
153 void setAffectedByFirstChildRules() { setRestyleFlag(AffectedByFirstChildRul
es); } | 153 void setAffectedByFirstChildRules() { setRestyleFlag(AffectedByFirstChildRul
es); } |
154 | 154 |
155 bool affectedByLastChildRules() const { return hasRestyleFlag(AffectedByLast
ChildRules); } | 155 bool affectedByLastChildRules() const { return hasRestyleFlag(AffectedByLast
ChildRules); } |
156 void setAffectedByLastChildRules() { setRestyleFlag(AffectedByLastChildRules
); } | 156 void setAffectedByLastChildRules() { setRestyleFlag(AffectedByLastChildRules
); } |
157 | 157 |
| 158 bool needsAdjacentStyleRecalc() const; |
| 159 |
158 // FIXME: These methods should all be renamed to something better than "chec
k", | 160 // FIXME: These methods should all be renamed to something better than "chec
k", |
159 // since it's not clear that they alter the style bits of siblings and child
ren. | 161 // since it's not clear that they alter the style bits of siblings and child
ren. |
160 void checkForChildrenAdjacentRuleChanges(); | 162 void checkForChildrenAdjacentRuleChanges(); |
161 enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, Sib
lingElementRemoved }; | 163 enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, Sib
lingElementRemoved }; |
162 void checkForSiblingStyleChanges(SiblingCheckType, Node* nodeBeforeChange, N
ode* nodeAfterChange); | 164 void checkForSiblingStyleChanges(SiblingCheckType, Node* nodeBeforeChange, N
ode* nodeAfterChange); |
163 void recalcChildStyle(StyleRecalcChange); | 165 void recalcChildStyle(StyleRecalcChange); |
164 | 166 |
165 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); } | 167 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); } |
166 | 168 |
167 // -------------------------------------------------------------------------
---- | 169 // -------------------------------------------------------------------------
---- |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 | 308 |
307 inline void ContainerNode::detachChildren(const AttachContext& context) | 309 inline void ContainerNode::detachChildren(const AttachContext& context) |
308 { | 310 { |
309 AttachContext childrenContext(context); | 311 AttachContext childrenContext(context); |
310 childrenContext.resolvedStyle = nullptr; | 312 childrenContext.resolvedStyle = nullptr; |
311 | 313 |
312 for (Node* child = firstChild(); child; child = child->nextSibling()) | 314 for (Node* child = firstChild(); child; child = child->nextSibling()) |
313 child->detach(childrenContext); | 315 child->detach(childrenContext); |
314 } | 316 } |
315 | 317 |
| 318 inline bool ContainerNode::needsAdjacentStyleRecalc() const |
| 319 { |
| 320 if (!childrenAffectedByDirectAdjacentRules() && !childrenAffectedByIndirectA
djacentRules()) |
| 321 return false; |
| 322 return childNeedsStyleRecalc() || childNeedsStyleInvalidation(); |
| 323 } |
| 324 |
316 inline unsigned Node::countChildren() const | 325 inline unsigned Node::countChildren() const |
317 { | 326 { |
318 if (!isContainerNode()) | 327 if (!isContainerNode()) |
319 return 0; | 328 return 0; |
320 return toContainerNode(this)->countChildren(); | 329 return toContainerNode(this)->countChildren(); |
321 } | 330 } |
322 | 331 |
323 inline Node* Node::firstChild() const | 332 inline Node* Node::firstChild() const |
324 { | 333 { |
325 if (!isContainerNode()) | 334 if (!isContainerNode()) |
(...skipping 28 matching lines...) Expand all Loading... |
354 inline void getChildNodes(ContainerNode& node, NodeVector& nodes) | 363 inline void getChildNodes(ContainerNode& node, NodeVector& nodes) |
355 { | 364 { |
356 ASSERT(!nodes.size()); | 365 ASSERT(!nodes.size()); |
357 for (Node* child = node.firstChild(); child; child = child->nextSibling()) | 366 for (Node* child = node.firstChild(); child; child = child->nextSibling()) |
358 nodes.append(child); | 367 nodes.append(child); |
359 } | 368 } |
360 | 369 |
361 } // namespace blink | 370 } // namespace blink |
362 | 371 |
363 #endif // ContainerNode_h | 372 #endif // ContainerNode_h |
OLD | NEW |