From c2208fecfd586d2f3b7f733d7770ac62e3f19ff9 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 18 Oct 2022 22:23:35 +0200 Subject: [PATCH] QmlDesigner: Rewriters parses immediately The rewriter needs to parse the file immediately and not use the timer. Change-Id: I6399edc23201d301dcb7d8d33d1bd956dd087b4c Reviewed-by: Thomas Hartmann --- .../designercore/include/externaldependenciesinterface.h | 1 + src/plugins/qmldesigner/designercore/model/rewriterview.cpp | 2 +- src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp | 5 +++++ src/plugins/qmldesigner/qmldesignerexternaldependencies.h | 1 + tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp | 1 + 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h index 1a67704f824..2f2da219aac 100644 --- a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h +++ b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h @@ -37,6 +37,7 @@ public: virtual bool isQt6Import() const = 0; virtual bool hasStartupTarget() const = 0; virtual PuppetStartData puppetStartData(const class Model &model) const = 0; + virtual bool instantQmlTextUpdate() const = 0; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 63ece33a4d3..3ed0ec01e7d 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -1084,7 +1084,7 @@ void RewriterView::qmlTextChanged() } case Amend: { - if (m_instantQmlTextUpdate) { + if (m_instantQmlTextUpdate || externalDependencies().instantQmlTextUpdate()) { amendQmlText(); } else { if (externalDependencies().viewManagerUsesRewriterView(this)) { diff --git a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp index 636f6349be0..9538f61297d 100644 --- a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp +++ b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp @@ -231,4 +231,9 @@ PuppetStartData ExternalDependencies::puppetStartData(const Model &model) const return data; } +bool ExternalDependencies::instantQmlTextUpdate() const +{ + return false; +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/qmldesignerexternaldependencies.h b/src/plugins/qmldesigner/qmldesignerexternaldependencies.h index 40c4f9d2f33..519c8033a25 100644 --- a/src/plugins/qmldesigner/qmldesignerexternaldependencies.h +++ b/src/plugins/qmldesigner/qmldesignerexternaldependencies.h @@ -34,6 +34,7 @@ public: bool isQt6Import() const override; bool hasStartupTarget() const override; PuppetStartData puppetStartData(const class Model &model) const override; + bool instantQmlTextUpdate() const override; private: const DesignerSettings &m_designerSettings; diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index 0b3d073662d..cc29b586524 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -158,6 +158,7 @@ public: bool isQt6Import() const override { return true; } bool hasStartupTarget() const override { return true; } PuppetStartData puppetStartData(const class Model &) const override { return {}; } + bool instantQmlTextUpdate() const override { return true; } public: QSettings qsettings;