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();