QmlDesigner: Fix puppet creation in 3D asset importing

Fixes: QDS-8038
Change-Id: Id7d2b681253fca5afd2611aacccd6aef2ec23b40
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Miikka Heikkinen
2022-10-24 13:06:53 +03:00
parent b662c50e0a
commit a0a8bf2245

View File

@@ -5,11 +5,13 @@
#include "qmldesignerplugin.h" #include "qmldesignerplugin.h"
#include "qmldesignerconstants.h" #include "qmldesignerconstants.h"
#include "externaldependenciesinterface.h"
#include "model.h" #include "model.h"
#include "puppetstarter.h" #include "puppetstarter.h"
#include "rewritertransaction.h" #include "rewritertransaction.h"
#include "rewriterview.h" #include "rewriterview.h"
#include "rewritingexception.h" #include "rewritingexception.h"
#include "viewmanager.h"
#include <qmljs/qmljsmodelmanagerinterface.h> #include <qmljs/qmljsmodelmanagerinterface.h>
@@ -564,10 +566,11 @@ void ItemLibraryAssetImporter::startNextImportProcess()
if (m_puppetQueue.isEmpty()) if (m_puppetQueue.isEmpty())
return; return;
auto view = QmlDesignerPlugin::viewManager().view();
auto doc = QmlDesignerPlugin::instance()->currentDesignDocument(); auto doc = QmlDesignerPlugin::instance()->currentDesignDocument();
Model *model = doc ? doc->currentModel() : nullptr; Model *model = doc ? doc->currentModel() : nullptr;
if (model) { if (model && view) {
bool done = false; bool done = false;
while (!m_puppetQueue.isEmpty() && !done) { while (!m_puppetQueue.isEmpty() && !done) {
const ParseData pd = m_parseData.value(m_puppetQueue.takeLast()); const ParseData pd = m_parseData.value(m_puppetQueue.takeLast());
@@ -579,7 +582,7 @@ void ItemLibraryAssetImporter::startNextImportProcess()
m_currentImportId = pd.importId; m_currentImportId = pd.importId;
m_puppetProcess = PuppetStarter::createPuppetProcess( m_puppetProcess = PuppetStarter::createPuppetProcess(
{}, view->externalDependencies().puppetStartData(*model),
"custom", "custom",
{}, {},
[&] {}, [&] {},
@@ -605,17 +608,18 @@ void ItemLibraryAssetImporter::startNextIconProcess()
if (m_puppetQueue.isEmpty()) if (m_puppetQueue.isEmpty())
return; return;
auto view = QmlDesignerPlugin::viewManager().view();
auto doc = QmlDesignerPlugin::instance()->currentDesignDocument(); auto doc = QmlDesignerPlugin::instance()->currentDesignDocument();
Model *model = doc ? doc->currentModel() : nullptr; Model *model = doc ? doc->currentModel() : nullptr;
if (model) { if (model && view) {
bool done = false; bool done = false;
while (!m_puppetQueue.isEmpty() && !done) { while (!m_puppetQueue.isEmpty() && !done) {
const ParseData pd = m_parseData.value(m_puppetQueue.takeLast()); const ParseData pd = m_parseData.value(m_puppetQueue.takeLast());
QStringList puppetArgs; QStringList puppetArgs;
puppetArgs << "--rendericon" << QString::number(24) << pd.iconFile << pd.iconSource; puppetArgs << "--rendericon" << QString::number(24) << pd.iconFile << pd.iconSource;
m_puppetProcess = PuppetStarter::createPuppetProcess( m_puppetProcess = PuppetStarter::createPuppetProcess(
{}, view->externalDependencies().puppetStartData(*model),
"custom", "custom",
{}, {},
[&] {}, [&] {},