From d26e35b221c51ed56237dff47d48fcb204e317f0 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 14 Mar 2023 11:57:34 +0100 Subject: [PATCH] QmlDesigner: Improve speed of undo Undo works strickly on the text editor and we wait 600ms until we propagte changes from text editor to the model, to not interrupt typing. In this case we should force the update immediately. Change-Id: I5c854e7b4c6936e02c57d4cc7433a6e0ede50af4 Reviewed-by: Burak Hancerli Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/integration/designdocument.cpp | 8 ++++++-- .../qmldesigner/designercore/include/rewriterview.h | 2 ++ .../qmldesigner/designercore/model/rewriterview.cpp | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp index 2b185f2bf0b..f4001ed4dca 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp @@ -700,16 +700,20 @@ ModelNode DesignDocument::rootModelNode() const void DesignDocument::undo() { - if (rewriterView() && !rewriterView()->modificationGroupActive()) + if (rewriterView() && !rewriterView()->modificationGroupActive()) { plainTextEdit()->undo(); + rewriterView()->forceAmend(); + } viewManager().resetPropertyEditorView(); } void DesignDocument::redo() { - if (rewriterView() && !rewriterView()->modificationGroupActive()) + if (rewriterView() && !rewriterView()->modificationGroupActive()) { plainTextEdit()->redo(); + rewriterView()->forceAmend(); + } viewManager().resetPropertyEditorView(); } diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 56dc01c215d..ea777edce75 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -170,6 +170,8 @@ public: bool possibleImportsEnabled() const; void setPossibleImportsEnabled(bool b); + void forceAmend(); + signals: void modelInterfaceProjectUpdated(); diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 4a9ab62814c..35204204593 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -703,6 +703,12 @@ void RewriterView::setPossibleImportsEnabled(bool b) m_possibleImportsEnabled = b; } +void RewriterView::forceAmend() +{ + m_amendTimer.stop(); + amendQmlText(); +} + Internal::ModelNodePositionStorage *RewriterView::positionStorage() const { return m_positionStorage.data();