diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2018-02-26 14:26:07 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-02-26 13:31:23 +0000 |
commit | 0474216e2ffa72cc67fe17964466b967de1c5be9 (patch) | |
tree | 6068321007163808d1fcca65501788c9a1a56e2f | |
parent | f60641f3d3d6da91dcba8cbe2c531d529bfcbc47 (diff) |
QmlProject: Fix import paths for code model
This fixes a regression introduced by
30638df441515901c6d43b2c67a5ca4a53eaf814.
Custom import paths have to be absolute for the code model.
Change-Id: I232229fa58c3900fe684ca4529b2ed08bf93e8be
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlproject.cpp | 13 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlproject.h | 1 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp | 13 |
3 files changed, 14 insertions, 13 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 471ef4a13b..26e5060b0f 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -177,7 +177,7 @@ void QmlProject::refresh(RefreshOptions options) QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->defaultProjectInfoForProject(this); - foreach (const QString &searchPath, customImportPaths()) + foreach (const QString &searchPath, makeAbsolute(canonicalProjectDir(), customImportPaths())) projectInfo.importPaths.maybeInsert(Utils::FileName::fromString(searchPath), QmlJS::Dialect::Qml); @@ -249,6 +249,17 @@ void QmlProject::refreshProjectFile() refresh(QmlProject::ProjectFile | Files); } +QStringList QmlProject::makeAbsolute(const Utils::FileName &path, const QStringList &relativePaths) +{ + if (path.isEmpty()) + return relativePaths; + + const QDir baseDir(path.toString()); + return Utils::transform(relativePaths, [&baseDir](const QString &path) { + return QDir::cleanPath(baseDir.absoluteFilePath(path)); + }); +} + void QmlProject::refreshFiles(const QSet<QString> &/*added*/, const QSet<QString> &removed) { refresh(Files); diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 4ecd7b226e..1728aad36f 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -75,6 +75,7 @@ public: void refreshProjectFile(); + static QStringList makeAbsolute(const Utils::FileName &path, const QStringList &relativePaths); protected: RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) override; bool setupTarget(ProjectExplorer::Target *t) override; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 6015d19f9e..9e8df4546f 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -121,17 +121,6 @@ QString QmlProjectRunConfiguration::executable() const return qmlscene.isEmpty() ? QString("qmlscene") : qmlscene; } -static QStringList makeAbsolute(const Utils::FileName &path, const QStringList &relativePaths) -{ - if (path.isEmpty()) - return relativePaths; - - const QDir baseDir(path.toString()); - return Utils::transform(relativePaths, [&baseDir](const QString &path) { - return QDir::cleanPath(baseDir.absoluteFilePath(path)); - }); -} - QString QmlProjectRunConfiguration::commandLineArguments() const { // arguments in .user file @@ -143,7 +132,7 @@ QString QmlProjectRunConfiguration::commandLineArguments() const // arguments from .qmlproject file const QmlProject *project = static_cast<QmlProject *>(currentTarget->project()); foreach (const QString &importPath, - makeAbsolute(project->targetDirectory(currentTarget), project->customImportPaths())) { + QmlProject::makeAbsolute(project->targetDirectory(currentTarget), project->customImportPaths())) { Utils::QtcProcess::addArg(&args, QLatin1String("-I"), osType); Utils::QtcProcess::addArg(&args, importPath, osType); } |