diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index 5327098cf3a..79242905905 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -989,15 +989,6 @@ void addTabBarToStackedContainer(const SelectionContext &selectionContext) } -Utils::FilePath projectFilePath() -{ - if (auto *doc = QmlDesignerPlugin::instance()->documentManager().currentDesignDocument()) { - if (auto *proj = ProjectExplorer::SessionManager::projectForFile(doc->fileName())) - return proj->projectDirectory(); - } - return Utils::FilePath(); -} - static AddFilesResult addFilesToProject(const QStringList &fileNames, const QString &defaultDirectory) { QString directory = AddImagesDialog::getDirectory(fileNames, defaultDirectory); @@ -1050,10 +1041,10 @@ static QString getAssetDefaultDirectory(const QString &assetDir, const QString & { QString adjustedDefaultDirectory = defaultDirectory; - Utils::FilePath contentPath = projectFilePath(); + Utils::FilePath contentPath = QmlDesignerPlugin::instance()->documentManager().currentProjectDirPath(); if (contentPath.pathAppended("content").exists()) - contentPath = contentPath.pathAppended("content"); + contentPath = contentPath.pathAppended("content"); Utils::FilePath assetPath = contentPath.pathAppended(assetDir); diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp index f32a66b832f..e9e76c29cba 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp @@ -344,7 +344,7 @@ Utils::FilePath DesignDocument::projectFolder() const bool DesignDocument::hasProject() const { - return ProjectExplorer::SessionManager::projectForFile(fileName()); + return !DocumentManager::currentProjectDirPath().isEmpty(); } void DesignDocument::changeToInFileComponentModel(ComponentTextModifier *textModifer) diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp index d75d570fc92..453dd96232a 100644 --- a/src/plugins/qmldesigner/documentmanager.cpp +++ b/src/plugins/qmldesigner/documentmanager.cpp @@ -358,11 +358,18 @@ Utils::FilePath DocumentManager::currentProjectDirPath() return {}; Utils::FilePath qmlFileName = QmlDesignerPlugin::instance()->currentDesignDocument()->fileName(); - ProjectExplorer::Project *project = ProjectExplorer::SessionManager::projectForFile(qmlFileName); - if (!project) - return {}; - return project->projectDirectory(); + ProjectExplorer::Project *project = ProjectExplorer::SessionManager::projectForFile(qmlFileName); + if (project) + return project->projectDirectory(); + + const QList projects = ProjectExplorer::SessionManager::projects(); + for (auto p : projects) { + if (qmlFileName.startsWith(p->projectDirectory().toString())) + return p->projectDirectory(); + } + + return {}; } QStringList DocumentManager::isoIconsQmakeVariableValue(const QString &proPath)