diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index a019b6fe536..67d8250658c 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -204,6 +204,24 @@ FormEditorItem* DragTool::calculateContainer(const QPointF &point, FormEditorIte return 0; } + QList DragTool::missingImportList(const ItemLibraryEntry &itemLibraryEntry) +{ + QList importToBeAddedList; + + if (!itemLibraryEntry.requiredImport().isEmpty()) { + const QString newImportUrl = itemLibraryEntry.requiredImport(); + const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion())); + Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); + + if (itemLibraryEntry.majorVersion() == -1 && itemLibraryEntry.minorVersion() == -1) { + newImport = Import::createFileImport(newImportUrl, QString()); + } else { + newImport = Import::createLibraryImport(newImportUrl, newImportVersion); + } + } + return importToBeAddedList; +} + void DragTool::formEditorItemsChanged(const QList & itemList) { @@ -296,17 +314,9 @@ void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event) view()->widget()->setFocus(); m_Aborted = false; Q_ASSERT(!event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo").isEmpty()); - ItemLibraryEntry itemLibraryEntry = itemLibraryEntryFromData(event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo")); - if (!itemLibraryEntry.requiredImport().isEmpty()) { - const QString newImportUrl = itemLibraryEntry.requiredImport(); - const QString newImportVersion = QString("%1.%2").arg(QString::number(itemLibraryEntry.majorVersion()), QString::number(itemLibraryEntry.minorVersion())); - Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); - if (!view()->model()->hasImport(newImport, true, true)) { - importToBeAddedList.append(newImport); - } - - } + importToBeAddedList = missingImportList( + itemLibraryEntryFromData(event->mimeData()->data("application/vnd.bauhaus.itemlibraryinfo"))); } view()->model()->changeImports(importToBeAddedList, QList()); diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.h b/src/plugins/qmldesigner/components/formeditor/dragtool.h index 34e699c443e..3db77b317a2 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.h +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.h @@ -114,6 +114,7 @@ private: void createQmlItemNode(const ItemLibraryEntry &itemLibraryEntry, QmlItemNode parentNode, QPointF scenePos); void createQmlItemNodeFromImage(const QString &imageName, QmlItemNode parentNode, QPointF scenePos); FormEditorItem* calculateContainer(const QPointF &point, FormEditorItem * currentItem = 0); + QList missingImportList(const ItemLibraryEntry &itemLibraryEntry); void begin(QPointF scenePos); void end(QPointF scenePos);