diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index 3a7d3789044d7161269241fcd99ef3dbcadf38f5..96b7ddddb3cf8e2439f747b8066b7e3dc6cb18ee 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -748,12 +748,14 @@ RewriterView *DesignDocumentController::rewriterView() const
 
 void DesignDocumentController::undo()
 {
-    m_d->textEdit->undo();
+    if (m_d->rewriterView && !m_d->rewriterView->modificationGroupActive())
+        m_d->textEdit->undo();
 }
 
 void DesignDocumentController::redo()
 {
-    m_d->textEdit->redo();
+    if (m_d->rewriterView && !m_d->rewriterView->modificationGroupActive())
+        m_d->textEdit->redo();
 }
 
 #ifdef ENABLE_TEXT_VIEW
diff --git a/src/plugins/qmldesigner/core/include/rewriterview.h b/src/plugins/qmldesigner/core/include/rewriterview.h
index ae786990aa9481001a842028c9aba6d78538f53b..570dd1f649b5102de69e992fec13824006cf3cf2 100644
--- a/src/plugins/qmldesigner/core/include/rewriterview.h
+++ b/src/plugins/qmldesigner/core/include/rewriterview.h
@@ -153,6 +153,7 @@ public:
     int nodeLength(const ModelNode &node) const;
     int firstDefinitionInsideOffset(const ModelNode &node) const;
     int firstDefinitionInsideLength(const ModelNode &node) const;
+    bool modificationGroupActive();
 
 signals:
     void errorsChanged(const QList<RewriterView::Error> &errors);
diff --git a/src/plugins/qmldesigner/core/model/rewriterview.cpp b/src/plugins/qmldesigner/core/model/rewriterview.cpp
index c913ab9ada02b915671295f76b0e0e0ad8cc1b7a..afb57334a9059fa13098562dfa1598ba7f357a9e 100644
--- a/src/plugins/qmldesigner/core/model/rewriterview.cpp
+++ b/src/plugins/qmldesigner/core/model/rewriterview.cpp
@@ -484,6 +484,11 @@ int RewriterView::firstDefinitionInsideLength(const ModelNode &node) const
     return objectLengthCalculator(offset);
 }
 
+bool RewriterView::modificationGroupActive()
+{
+    return m_modificationGroupActive;
+}
+
 void RewriterView::qmlTextChanged()
 {
     if (inErrorState())