summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/dom/ContainerNode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/ContainerNode.cpp')
-rw-r--r--Source/WebCore/dom/ContainerNode.cpp14
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);