From 3ec2cd1f0bfcd1df1ae6e032ec0ce2b5902b3e97 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 30 Jan 2024 13:14:15 +0200 Subject: [PATCH] QmlDesigner: Restart puppet asynchronously when imports change If imports are changed in transaction, the puppet restart should be done after the transaction is completed, or the new types won't work correctly until puppet is reset again. Task-number: QDS-11811 Change-Id: Ie60945fbe9e7090b7fc27b55e1b6d23d5aa04a55 Reviewed-by: Mahmoud Badri Reviewed-by: Qt CI Patch Build Bot --- .../qmldesigner/designercore/instances/nodeinstanceview.cpp | 2 +- src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index cd56af86643..f16acf380f8 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -625,7 +625,7 @@ void NodeInstanceView::nodeOrderChanged(const NodeListProperty &listProperty) void NodeInstanceView::importsChanged(const Imports &/*addedImports*/, const Imports &/*removedImports*/) { - restartProcess(); + delayedRestartProcess(); } void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index b8d14ef62b2..e524e91c70f 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -182,11 +182,8 @@ QmlItemNode QmlItemNode::createQmlItemNodeForEffect(AbstractView *view, const QString effectName = QFileInfo(effectPath).baseName(); Import import = Import::createLibraryImport("Effects." + effectName, "1.0"); try { - if (!view->model()->hasImport(import, true, true)) { + if (!view->model()->hasImport(import, true, true)) view->model()->changeImports({import}, {}); - // Trigger async reset puppet to ensure full transaction is done before reset - view->resetPuppet(); - } } catch (const Exception &) { QTC_ASSERT(false, return); }