diff --git a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp index 1bd58991657..a703f838663 100644 --- a/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp +++ b/src/plugins/qmldesigner/qmldesignerexternaldependencies.cpp @@ -236,9 +236,7 @@ QStringList ExternalDependencies::modulePaths() const if (auto path = qmlPath(target); !path.isEmpty()) modulePaths.push_back(path); - for (const QString &modulePath : qmlBuildSystem->customImportPaths()) - modulePaths.append(project->projectDirectory().pathAppended(modulePath).toString()); - + modulePaths.append(qmlBuildSystem->absoluteImportPaths()); return modulePaths; } @@ -250,10 +248,7 @@ QStringList ExternalDependencies::projectModulePaths() const auto [project, target, qmlBuildSystem] = activeProjectEntries(); if (project && target && qmlBuildSystem) { - QStringList modulePaths; - - for (const QString &modulePath : qmlBuildSystem->customImportPaths()) - modulePaths.append(project->projectDirectory().pathAppended(modulePath).toString()); + return qmlBuildSystem->absoluteImportPaths(); } return {}; diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp index df52b599aa8..6b6ef441bfe 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.cpp @@ -200,8 +200,8 @@ void QmlBuildSystem::refresh(RefreshOptions options) = modelManager->defaultProjectInfoForProject(project(), project()->files(Project::HiddenRccFolders)); - for (const QString &searchPath : customImportPaths()) { - projectInfo.importPaths.maybeInsert(projectDirectory().pathAppended(searchPath), + for (const QString &importPath : absoluteImportPaths()) { + projectInfo.importPaths.maybeInsert(Utils::FilePath::fromString(importPath), QmlJS::Dialect::Qml); } @@ -649,6 +649,16 @@ QStringList QmlBuildSystem::importPaths() const return m_projectItem->importPaths(); } +QStringList QmlBuildSystem::absoluteImportPaths() +{ + return Utils::transform(m_projectItem->importPaths(), [&](const QString &importPath) { + Utils::FilePath filePath = Utils::FilePath::fromString(importPath); + if (!filePath.isAbsolutePath()) + return (projectDirectory() / importPath).toString(); + return projectDirectory().resolvePath(importPath).toString(); + }); +} + Utils::FilePaths QmlBuildSystem::files() const { return m_projectItem->files(); diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h index 2d689a19712..95b66871eb7 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h @@ -68,18 +68,24 @@ public: Utils::FilePath targetFile(const Utils::FilePath &sourceFile) const; Utils::EnvironmentItems environment() const; + + QStringList importPaths() const; + QStringList absoluteImportPaths(); QStringList customImportPaths() const; QStringList customFileSelectors() const; + bool multilanguageSupport() const; QStringList supportedLanguages() const; void setSupportedLanguages(QStringList languages); + QString primaryLanguage() const; void setPrimaryLanguage(QString language); + bool forceFreeType() const; bool widgetApp() const; + QStringList shaderToolArgs() const; QStringList shaderToolFiles() const; - QStringList importPaths() const; Utils::FilePaths files() const; QString versionQt() const;