From a52c2519e36498c270c9b6af0ab8d48d50fc224c Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Mon, 22 Mar 2021 21:32:47 +0200 Subject: [PATCH] QmlDesigner: Fix import version when adding unimported module Fixes: QDS-3994 Change-Id: If39df641cbfb563a169b3b2e8001f68941fd398c Reviewed-by: Thomas Hartmann --- .../qmldesigner/itemLibraryQmlSources/ItemsView.qml | 10 +++------- .../itemlibrary/itemlibraryaddimportmodel.cpp | 9 +++++++++ .../components/itemlibrary/itemlibraryaddimportmodel.h | 1 + .../components/itemlibrary/itemlibrarywidget.cpp | 4 ++-- .../components/itemlibrary/itemlibrarywidget.h | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml index 5a3679032d7..0c2f8136daf 100644 --- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml @@ -78,7 +78,6 @@ ScrollView { property string importToRemove: "" property string importToAdd: "" - property var currentItem: null // called from C++ to close context menu on focus out function closeContextMenu() @@ -137,8 +136,8 @@ ScrollView { StudioControls.MenuItem { id: importMenuItem text: qsTr("Add Module: ") + importToAdd - enabled: currentItem - onTriggered: rootView.addImportForItem(currentItem) + enabled: importToAdd !== "" + onTriggered: rootView.addImportForItem(importToAdd) } } } @@ -211,10 +210,7 @@ ScrollView { onShowContextMenu: { if (!itemUsable) { importToAdd = itemRequiredImport - if (importToAdd !== "") { - currentItem = itemLibraryEntry - itemContextMenu.popup() - } + itemContextMenu.popup() } } } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.cpp index f0a02270b21..4d49a9ace08 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.cpp @@ -141,6 +141,15 @@ void ItemLibraryAddImportModel::update(const QList &possibleImports) endResetModel(); } +Import ItemLibraryAddImportModel::getImport(const QString &importUrl) const +{ + for (const Import &import : std::as_const(m_importList)) + if (import.url() == importUrl) + return import; + + return {}; +} + void ItemLibraryAddImportModel::setSearchText(const QString &searchText) { QString lowerSearchText = searchText.toLower(); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.h index 3ed6b3f3b5e..c1eb957fbd5 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryaddimportmodel.h @@ -51,6 +51,7 @@ public: Import getImportAt(int index) const; void setPriorityImports(const QSet &priorityImports); + Import getImport(const QString &importUrl) const; private: QString m_searchText; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 278bc934e37..818553404d5 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -434,12 +434,12 @@ void ItemLibraryWidget::removeImport(const QString &importUrl) m_model->changeImports({}, {importSection->importEntry()}); } -void ItemLibraryWidget::addImportForItem(const QVariant &entry) +void ItemLibraryWidget::addImportForItem(const QString &importUrl) { QTC_ASSERT(m_itemLibraryModel, return); QTC_ASSERT(m_model, return); - Import import = m_itemLibraryModel->entryToImport(entry.value()); + Import import = m_itemLibraryAddImportModel->getImport(importUrl); m_model->changeImports({import}, {}); } diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index 1a34c7e96a1..2883cebb633 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -90,7 +90,7 @@ public: Q_INVOKABLE void startDragAndDrop(const QVariant &itemLibEntry, const QPointF &mousePos); Q_INVOKABLE void removeImport(const QString &importUrl); - Q_INVOKABLE void addImportForItem(const QVariant &entry); + Q_INVOKABLE void addImportForItem(const QString &importUrl); Q_INVOKABLE void handleTabChanged(int index); Q_INVOKABLE void handleAddModule(); Q_INVOKABLE void handleAddAsset();