diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp index 9af354ee11d..1224760ed6a 100644 --- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp @@ -235,10 +235,36 @@ void DragTool::dropEvent(QGraphicsSceneDragDropEvent * event) } } +static ItemLibraryEntry itemLibraryEntryFromData(const QByteArray &data) +{ + QDataStream stream(data); + + ItemLibraryEntry itemLibraryEntry; + stream >> itemLibraryEntry; + + return itemLibraryEntry; +} + void DragTool::dragEnterEvent(QGraphicsSceneDragDropEvent * event) { if (event->mimeData()->hasFormat("application/vnd.bauhaus.itemlibraryinfo") || event->mimeData()->hasFormat("application/vnd.bauhaus.libraryresource")) { + + if (event->mimeData()->hasFormat("application/vnd.bauhaus.itemlibraryinfo")) { + 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()->imports().contains(newImport)) { + view()->model()->addImport(newImport); + } + + } + } + if (!m_rewriterTransaction.isValid()) { view()->clearSelectedModelNodes(); m_rewriterTransaction = view()->beginRewriterTransaction(); @@ -268,16 +294,6 @@ void DragTool::dragLeaveEvent(QGraphicsSceneDragDropEvent * event) } } -static ItemLibraryEntry itemLibraryEntryFromData(const QByteArray &data) -{ - QDataStream stream(data); - - ItemLibraryEntry itemLibraryEntry; - stream >> itemLibraryEntry; - - return itemLibraryEntry; -} - void DragTool::dragMoveEvent(QGraphicsSceneDragDropEvent * event) { if (m_blockMove)