| Index: trunk/Source/core/dom/Node.cpp
|
| ===================================================================
|
| --- trunk/Source/core/dom/Node.cpp (revision 151673)
|
| +++ trunk/Source/core/dom/Node.cpp (working copy)
|
| @@ -864,19 +864,15 @@
|
| markAncestorsWithChildNeedsStyleRecalc();
|
| }
|
|
|
| -void Node::lazyAttach()
|
| +void Node::lazyAttach(ShouldSetAttached shouldSetAttached)
|
| {
|
| - // It's safe to synchronously attach here because we're in the middle of style recalc
|
| - // while it's not safe to mark nodes as needing style recalc except in the loop in
|
| - // Element::recalcStyle because we may mark an ancestor as not needing recalc and
|
| - // then the node would never get updated. One place this currently happens is
|
| - // HTMLObjectElement::renderFallbackContent which may call lazyAttach from inside
|
| - // attach which was triggered by a recalcStyle.
|
| - if (document()->inStyleRecalc()) {
|
| - attach();
|
| - return;
|
| + for (Node* n = this; n; n = NodeTraversal::next(n, this)) {
|
| + if (n->hasChildNodes())
|
| + n->setChildNeedsStyleRecalc();
|
| + n->setStyleChange(FullStyleChange);
|
| + if (shouldSetAttached == SetAttached)
|
| + n->setAttached();
|
| }
|
| - setStyleChange(FullStyleChange);
|
| markAncestorsWithChildNeedsStyleRecalc();
|
| }
|
|
|
|
|