diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 43188661dfa..4bb5ec1b64c 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -855,6 +855,13 @@ Utils::MacroExpander *Project::macroExpander() const return &d->m_macroExpander; } +QVariant Project::additionalData(Core::Id id, const Target *target) const +{ + Q_UNUSED(id); + Q_UNUSED(target); + return QVariant(); +} + bool Project::isParsing() const { return d->m_isParsing; diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index e6df98372fd..61f930d17bd 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -166,6 +166,8 @@ public: void setup(const QList &infoList); Utils::MacroExpander *macroExpander() const; + virtual QVariant additionalData(Core::Id id, const Target *target) const; + bool isParsing() const; bool hasParsingData() const; diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 452fcce1b4e..6baf96ba872 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -673,6 +673,11 @@ void Target::setNamedSettings(const QString &name, const QVariant &value) d->m_pluginSettings.insert(name, value); } +QVariant Target::additionalData(Core::Id id) const +{ + return project()->additionalData(id, this); +} + void Target::updateDeviceState() { IDevice::ConstPtr current = DeviceKitInformation::device(kit()); diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index 233fc40b54d..56b4d0237a6 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -120,6 +120,8 @@ public: QVariant namedSettings(const QString &name) const; void setNamedSettings(const QString &name, const QVariant &value); + QVariant additionalData(Core::Id id) const; + template void subscribeSignal(void (S::*sig)(), R*recv, T (R::*sl)()) { new Internal::TargetSubscription([sig, recv, sl, this](ProjectConfiguration *pc) { diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index f368b09e28d..97cc6d2aa0e 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -1378,6 +1378,13 @@ QString QmakeProject::mapProFilePathToTarget(const FileName &proFilePath) return pro ? pro->targetInformation().target : QString(); } +QVariant QmakeProject::additionalData(Core::Id id, const Target *target) const +{ + if (id == "QmlDesignerImportPath") + return rootProjectNode()->variableValue(Variable::QmlDesignerImportPath); + return Project::additionalData(id, target); +} + } // namespace QmakeProjectManager #include "qmakeproject.moc" diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index ef1c6086951..bfad63d7d2f 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -111,6 +111,8 @@ public: QString mapProFilePathToTarget(const Utils::FileName &proFilePath); + QVariant additionalData(Core::Id id, const ProjectExplorer::Target *target) const final; + signals: void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool, bool); void buildDirectoryInitialized(); diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp index 8962310ffbe..5d80e5fa884 100644 --- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp +++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp @@ -39,9 +39,8 @@ #include #include #include +#include #include -#include -#include #include #include #include @@ -468,12 +467,10 @@ QProcessEnvironment PuppetCreator::processEnvironment() const if (!styleConfigFileName.isEmpty()) environment.appendOrSet("QT_QUICK_CONTROLS_CONF", styleConfigFileName); - if (m_currentProject) { - auto qmakeProject = qobject_cast(m_currentProject); - if (qmakeProject) { - QStringList designerImports = qmakeProject->rootProjectNode()->variableValue(QmakeProjectManager::Variable::QmlDesignerImportPath); - importPaths.append(designerImports); - } + if (m_currentProject && m_currentProject->activeTarget()) { + QStringList designerImports = m_currentProject->activeTarget() + ->additionalData("QmlDesignerImportPath").toStringList(); + importPaths.append(designerImports); } if (m_availablePuppetType == FallbackPuppet)