diff options
Diffstat (limited to 'Source/WebCore/dom/ContainerNode.cpp')
-rw-r--r-- | Source/WebCore/dom/ContainerNode.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/WebCore/dom/ContainerNode.cpp b/Source/WebCore/dom/ContainerNode.cpp index add53ce9a..adafeb617 100644 --- a/Source/WebCore/dom/ContainerNode.cpp +++ b/Source/WebCore/dom/ContainerNode.cpp @@ -40,6 +40,7 @@ #include "RenderBox.h" #include "RenderTheme.h" #include "RootInlineBox.h" +#include "UndoManager.h" #include <wtf/CurrentTime.h> #include <wtf/Vector.h> @@ -327,6 +328,10 @@ static void willRemoveChild(Node* child) ChildListMutationScope(child->parentNode()).willRemoveChild(child); child->notifyMutationObserversNodeWillDetach(); #endif +#if ENABLE(UNDO_MANAGER) + if (UndoManager::isRecordingAutomaticTransaction(child->parentNode())) + UndoManager::addTransactionStep(NodeRemovingDOMTransactionStep::create(child->parentNode(), child)); +#endif dispatchChildRemovalEvents(child); child->document()->nodeWillBeRemoved(child); // e.g. mutation event listener can create a new range. @@ -351,6 +356,10 @@ static void willRemoveChildren(ContainerNode* container) mutation.willRemoveChild(child); child->notifyMutationObserversNodeWillDetach(); #endif +#if ENABLE(UNDO_MANAGER) + if (UndoManager::isRecordingAutomaticTransaction(container)) + UndoManager::addTransactionStep(NodeRemovingDOMTransactionStep::create(container, child)); +#endif // fire removed from document mutation events. dispatchChildRemovalEvents(child); @@ -979,6 +988,11 @@ static void updateTreeAfterInsertion(ContainerNode* parent, Node* child, bool sh ChildListMutationScope(parent).childAdded(child); #endif +#if ENABLE(UNDO_MANAGER) + if (UndoManager::isRecordingAutomaticTransaction(parent)) + UndoManager::addTransactionStep(NodeInsertingDOMTransactionStep::create(parent, child)); +#endif + parent->childrenChanged(false, child->previousSibling(), child->nextSibling(), 1); ChildNodeInsertionNotifier(parent).notify(child); |