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.

Task-number: QDS-9440
Change-Id: I5c854e7b4c6936e02c57d4cc7433a6e0ede50af4
(cherry picked from commit d26e35b221)
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2023-03-14 11:57:34 +01:00
parent 58cd47f203
commit ee72b1099b
3 changed files with 14 additions and 2 deletions

View File

@@ -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();
}

View File

@@ -170,6 +170,8 @@ public:
bool possibleImportsEnabled() const;
void setPossibleImportsEnabled(bool b);
void forceAmend();
signals:
void modelInterfaceProjectUpdated();

View File

@@ -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();