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, 2008, 2009, 2013 Apple Inc. All rights
reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2013 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 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 dispatchSubtreeModifiedEvent(); | 597 dispatchSubtreeModifiedEvent(); |
598 return child; | 598 return child; |
599 } | 599 } |
600 | 600 |
601 void ContainerNode::removeBetween(Node* previousChild, Node* nextChild, Node& ol
dChild) | 601 void ContainerNode::removeBetween(Node* previousChild, Node* nextChild, Node& ol
dChild) |
602 { | 602 { |
603 EventDispatchForbiddenScope assertNoEventDispatch; | 603 EventDispatchForbiddenScope assertNoEventDispatch; |
604 | 604 |
605 ASSERT(oldChild.parentNode() == this); | 605 ASSERT(oldChild.parentNode() == this); |
606 | 606 |
607 if (!oldChild.needsAttach()) | 607 AttachContext context; |
608 oldChild.detach(); | 608 context.clearInvalidation = true; |
| 609 if (!needsAttach() || !oldChild.needsAttach()) |
| 610 oldChild.detach(context); |
609 | 611 |
610 if (nextChild) | 612 if (nextChild) |
611 nextChild->setPreviousSibling(previousChild); | 613 nextChild->setPreviousSibling(previousChild); |
612 if (previousChild) | 614 if (previousChild) |
613 previousChild->setNextSibling(nextChild); | 615 previousChild->setNextSibling(nextChild); |
614 if (m_firstChild == &oldChild) | 616 if (m_firstChild == &oldChild) |
615 m_firstChild = nextChild; | 617 m_firstChild = nextChild; |
616 if (m_lastChild == &oldChild) | 618 if (m_lastChild == &oldChild) |
617 m_lastChild = previousChild; | 619 m_lastChild = previousChild; |
618 | 620 |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 } | 878 } |
877 | 879 |
878 clearChildNeedsStyleRecalc(); | 880 clearChildNeedsStyleRecalc(); |
879 Node::attach(context); | 881 Node::attach(context); |
880 } | 882 } |
881 | 883 |
882 void ContainerNode::detach(const AttachContext& context) | 884 void ContainerNode::detach(const AttachContext& context) |
883 { | 885 { |
884 AttachContext childrenContext(context); | 886 AttachContext childrenContext(context); |
885 childrenContext.resolvedStyle = nullptr; | 887 childrenContext.resolvedStyle = nullptr; |
| 888 childrenContext.clearInvalidation = true; |
886 | 889 |
887 for (Node* child = firstChild(); child; child = child->nextSibling()) | 890 for (Node* child = firstChild(); child; child = child->nextSibling()) |
888 child->detach(childrenContext); | 891 child->detach(childrenContext); |
889 | 892 |
890 setChildNeedsStyleRecalc(); | 893 setChildNeedsStyleRecalc(); |
891 Node::detach(context); | 894 Node::detach(context); |
892 } | 895 } |
893 | 896 |
894 void ContainerNode::childrenChanged(const ChildrenChange& change) | 897 void ContainerNode::childrenChanged(const ChildrenChange& change) |
895 { | 898 { |
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1535 return true; | 1538 return true; |
1536 | 1539 |
1537 if (node->isElementNode() && toElement(node)->shadow()) | 1540 if (node->isElementNode() && toElement(node)->shadow()) |
1538 return true; | 1541 return true; |
1539 | 1542 |
1540 return false; | 1543 return false; |
1541 } | 1544 } |
1542 #endif | 1545 #endif |
1543 | 1546 |
1544 } // namespace blink | 1547 } // namespace blink |
OLD | NEW |