From 1bf23a6c74c18b1f89d17cbc9bfc2f93056020bc Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 27 Sep 2019 15:41:46 +0300 Subject: [PATCH] QmlDesigner: When adding 3D asset import, also add missing QtQuick3D When adding 3D asset import via a flow tag, check if QtQuick3D import is missing. If it is, add it automatically. Change-Id: Ia2e67180faa88e10b185a42a7ce426dc29d9ce23 Fixes: QDS-1067 Reviewed-by: Thomas Hartmann --- .../itemlibrary/itemlibrarywidget.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 9477871bdf0..f69c00b94d0 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -429,7 +429,22 @@ void ItemLibraryWidget::addPossibleImport(const QString &name) QTC_ASSERT(m_model, return); const Import import = m_model->highestPossibleImport(name); try { - m_model->changeImports({Import::createLibraryImport(name, import.version())}, {}); + QList addedImports = {Import::createLibraryImport(name, import.version())}; + // Special case for adding an import for 3D asset - also add QtQuick3D import + const QString asset3DPrefix = QLatin1String(Constants::QUICK_3D_ASSETS_FOLDER + 1) + + QLatin1Char('.'); + if (name.startsWith(asset3DPrefix)) { + const QString q3Dlib = QLatin1String(Constants::QT_QUICK_3D_MODULE_NAME); + Import q3DImport = m_model->highestPossibleImport(q3Dlib); + if (q3DImport.url() == q3Dlib) + addedImports.prepend(Import::createLibraryImport(q3Dlib, q3DImport.version())); + } + RewriterTransaction transaction + = m_model->rewriterView()->beginRewriterTransaction( + QByteArrayLiteral("ItemLibraryWidget::addPossibleImport")); + + m_model->changeImports(addedImports, {}); + transaction.commit(); } catch (const RewritingException &e) { e.showException();