QmlDesigner: Process add/remove imports actions together

Task-number: QDS-10529
Change-Id: Icd4efdb4c289f686b2e6eaed67432b662ba2ad29
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Vikas Pachdha
2023-08-30 12:18:47 +02:00
parent 1710254b98
commit b30337e04c
5 changed files with 21 additions and 28 deletions

View File

@@ -176,8 +176,8 @@ signals:
void modelInterfaceProjectUpdated(); void modelInterfaceProjectUpdated();
protected: // functions protected: // functions
void importAdded(const Import &import); void importsAdded(const Imports &imports);
void importRemoved(const Import &import); void importsRemoved(const Imports &imports);
Internal::ModelToTextMerger *modelToTextMerger() const; Internal::ModelToTextMerger *modelToTextMerger() const;
Internal::TextToModelMerger *textToModelMerger() const; Internal::TextToModelMerger *textToModelMerger() const;

View File

@@ -112,16 +112,20 @@ void ModelToTextMerger::nodeTypeChanged(const ModelNode &node,const QString &/*t
schedule(new ChangeTypeRewriteAction(node)); schedule(new ChangeTypeRewriteAction(node));
} }
void ModelToTextMerger::addImport(const Import &import) void ModelToTextMerger::addImports(const Imports &imports)
{ {
if (!import.isEmpty()) for (const Import &import : imports) {
schedule(new AddImportRewriteAction(import)); if (!import.isEmpty())
schedule(new AddImportRewriteAction(import));
}
} }
void ModelToTextMerger::removeImport(const Import &import) void ModelToTextMerger::removeImports(const Imports &imports)
{ {
if (!import.isEmpty()) for (const Import &import : imports) {
schedule(new RemoveImportRewriteAction(import)); if (!import.isEmpty())
schedule(new RemoveImportRewriteAction(import));
}
} }
void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange) void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange)

View File

@@ -38,8 +38,8 @@ public:
void nodeSlidAround(const ModelNode &movingNode, const ModelNode &inFrontOfNode); void nodeSlidAround(const ModelNode &movingNode, const ModelNode &inFrontOfNode);
void nodeTypeChanged(const ModelNode &node,const QString &type, int majorVersion, int minorVersion); void nodeTypeChanged(const ModelNode &node,const QString &type, int majorVersion, int minorVersion);
void addImport(const Import &import); void addImports(const Imports &import);
void removeImport(const Import &import); void removeImports(const Imports &imports);
protected: protected:
RewriterView *view(); RewriterView *view();

View File

@@ -261,40 +261,29 @@ void RewriterView::nodeReparented(const ModelNode &node, const NodeAbstractPrope
void RewriterView::importsChanged(const Imports &addedImports, const Imports &removedImports) void RewriterView::importsChanged(const Imports &addedImports, const Imports &removedImports)
{ {
for (const Import &import : addedImports) importsAdded(addedImports);
importAdded(import); importsRemoved(removedImports);
for (const Import &import : removedImports)
importRemoved(import);
} }
void RewriterView::importAdded(const Import &import) void RewriterView::importsAdded(const Imports &imports)
{ {
Q_ASSERT(textModifier()); Q_ASSERT(textModifier());
if (textToModelMerger()->isActive()) if (textToModelMerger()->isActive())
return; return;
if (import.url() == QLatin1String("Qt")) { modelToTextMerger()->addImports(imports);
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);
if (!isModificationGroupActive()) if (!isModificationGroupActive())
applyChanges(); applyChanges();
} }
void RewriterView::importRemoved(const Import &import) void RewriterView::importsRemoved(const Imports &imports)
{ {
Q_ASSERT(textModifier()); Q_ASSERT(textModifier());
if (textToModelMerger()->isActive()) if (textToModelMerger()->isActive())
return; return;
modelToTextMerger()->removeImport(import); modelToTextMerger()->removeImports(imports);
if (!isModificationGroupActive()) if (!isModificationGroupActive())
applyChanges(); applyChanges();

View File

@@ -1803,7 +1803,7 @@ void ModelValidator::modelMissesImport([[maybe_unused]] const QmlDesigner::Impor
void ModelValidator::importAbsentInQMl([[maybe_unused]] const QmlDesigner::Import &import) 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, void ModelValidator::bindingExpressionsDiffer([[maybe_unused]] BindingProperty &modelProperty,