From b30337e04c9f8851ad5b53558a32ba4994243609 Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Wed, 30 Aug 2023 12:18:47 +0200 Subject: [PATCH] QmlDesigner: Process add/remove imports actions together Task-number: QDS-10529 Change-Id: Icd4efdb4c289f686b2e6eaed67432b662ba2ad29 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Reviewed-by: Marco Bubke Reviewed-by: Thomas Hartmann --- .../designercore/include/rewriterview.h | 4 ++-- .../designercore/model/modeltotextmerger.cpp | 16 ++++++++----- .../designercore/model/modeltotextmerger.h | 4 ++-- .../designercore/model/rewriterview.cpp | 23 +++++-------------- .../designercore/model/texttomodelmerger.cpp | 2 +- 5 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 95e2e51d8a1..23841accda9 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -176,8 +176,8 @@ signals: void modelInterfaceProjectUpdated(); protected: // functions - void importAdded(const Import &import); - void importRemoved(const Import &import); + void importsAdded(const Imports &imports); + void importsRemoved(const Imports &imports); Internal::ModelToTextMerger *modelToTextMerger() const; Internal::TextToModelMerger *textToModelMerger() const; diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp index 1cbace80adf..bd7329f9923 100644 --- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp @@ -112,16 +112,20 @@ void ModelToTextMerger::nodeTypeChanged(const ModelNode &node,const QString &/*t schedule(new ChangeTypeRewriteAction(node)); } -void ModelToTextMerger::addImport(const Import &import) +void ModelToTextMerger::addImports(const Imports &imports) { - if (!import.isEmpty()) - schedule(new AddImportRewriteAction(import)); + for (const Import &import : imports) { + if (!import.isEmpty()) + schedule(new AddImportRewriteAction(import)); + } } -void ModelToTextMerger::removeImport(const Import &import) +void ModelToTextMerger::removeImports(const Imports &imports) { - if (!import.isEmpty()) - schedule(new RemoveImportRewriteAction(import)); + for (const Import &import : imports) { + if (!import.isEmpty()) + schedule(new RemoveImportRewriteAction(import)); + } } void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.h b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.h index efd199a2846..b9265639525 100644 --- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.h +++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.h @@ -38,8 +38,8 @@ public: void nodeSlidAround(const ModelNode &movingNode, const ModelNode &inFrontOfNode); void nodeTypeChanged(const ModelNode &node,const QString &type, int majorVersion, int minorVersion); - void addImport(const Import &import); - void removeImport(const Import &import); + void addImports(const Imports &import); + void removeImports(const Imports &imports); protected: RewriterView *view(); diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 1f80d6fe490..afd5a25321e 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -261,40 +261,29 @@ void RewriterView::nodeReparented(const ModelNode &node, const NodeAbstractPrope void RewriterView::importsChanged(const Imports &addedImports, const Imports &removedImports) { - for (const Import &import : addedImports) - importAdded(import); - - for (const Import &import : removedImports) - importRemoved(import); - + importsAdded(addedImports); + importsRemoved(removedImports); } -void RewriterView::importAdded(const Import &import) +void RewriterView::importsAdded(const Imports &imports) { Q_ASSERT(textModifier()); if (textToModelMerger()->isActive()) return; - if (import.url() == QLatin1String("Qt")) { - for (const Import &import : model()->imports()) { - if (import.url() == QLatin1String("QtQuick")) - return; //QtQuick magic we do not have to add an import for Qt - } - } - - modelToTextMerger()->addImport(import); + modelToTextMerger()->addImports(imports); if (!isModificationGroupActive()) applyChanges(); } -void RewriterView::importRemoved(const Import &import) +void RewriterView::importsRemoved(const Imports &imports) { Q_ASSERT(textModifier()); if (textToModelMerger()->isActive()) return; - modelToTextMerger()->removeImport(import); + modelToTextMerger()->removeImports(imports); if (!isModificationGroupActive()) applyChanges(); diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 0d6c756ba43..ebd80f174d3 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -1803,7 +1803,7 @@ void ModelValidator::modelMissesImport([[maybe_unused]] const QmlDesigner::Impor void ModelValidator::importAbsentInQMl([[maybe_unused]] const QmlDesigner::Import &import) { - Q_ASSERT(! m_merger->view()->model()->imports().contains(import)); + QTC_ASSERT(!m_merger->view()->model()->imports().contains(import), return); } void ModelValidator::bindingExpressionsDiffer([[maybe_unused]] BindingProperty &modelProperty,