diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 3a7d3789044..96b7ddddb3c 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 ae786990aa9..570dd1f649b 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 &errors); diff --git a/src/plugins/qmldesigner/core/model/rewriterview.cpp b/src/plugins/qmldesigner/core/model/rewriterview.cpp index c913ab9ada0..afb57334a90 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())