From a291d6f021a641b521a4e4851778ce680494bd66 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 4 Nov 2024 09:27:42 +0100 Subject: [PATCH] Do not search for project in directory with Open Workspace "Open Workspace" should open the selected directory as a workspace, regardless of whether there is another supported project file in that directory or not. Fixes: QTCREATORBUG-31789 Change-Id: Iab86dfa9c8e774eec3624ba703b6686a54ec1458 Reviewed-by: David Schulz --- src/plugins/projectexplorer/projectexplorer.cpp | 12 ++++++------ src/plugins/projectexplorer/projectexplorer.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 249c9ac603a..4f265650797 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1986,7 +1986,7 @@ void ProjectExplorerPluginPrivate::openWorkspaceAction() if (filePath.isEmpty()) return; - OpenProjectResult result = ProjectExplorerPlugin::openProject(filePath); + OpenProjectResult result = ProjectExplorerPlugin::openProject(filePath, /*searchInDir=*/false); if (!result) ProjectExplorerPlugin::showOpenProjectError(result); @@ -2277,9 +2277,9 @@ void ProjectExplorerPlugin::openProjectWelcomePage(const FilePath &filePath) showOpenProjectError(result); } -OpenProjectResult ProjectExplorerPlugin::openProject(const FilePath &filePath) +OpenProjectResult ProjectExplorerPlugin::openProject(const FilePath &filePath, bool searchInDir) { - OpenProjectResult result = openProjects({filePath}); + OpenProjectResult result = openProjects({filePath}, searchInDir); Project *project = result.project(); if (!project) return result; @@ -2327,15 +2327,15 @@ static void appendError(QString &errorString, const QString &error) errorString.append(error); } -OpenProjectResult ProjectExplorerPlugin::openProjects(const FilePaths &filePaths) +OpenProjectResult ProjectExplorerPlugin::openProjects(const FilePaths &filePaths, bool searchInDir) { QList openedPro; QList alreadyOpen; QString errorString; for (const FilePath &fileName : filePaths) { QTC_ASSERT(!fileName.isEmpty(), continue); - const FilePath filePath = [fileName] { - if (!fileName.isDir()) + const FilePath filePath = [fileName, searchInDir] { + if (!fileName.isDir() || !searchInDir) return fileName.absoluteFilePath(); // For the case of directories, try to see if there is a project file in the directory diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 3333a0a6b69..fdb8edbc2e9 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -99,8 +99,8 @@ public: static ProjectExplorerPlugin *instance(); - static OpenProjectResult openProject(const Utils::FilePath &filePath); - static OpenProjectResult openProjects(const Utils::FilePaths &filePaths); + static OpenProjectResult openProject(const Utils::FilePath &filePath, bool searchInDir = true); + static OpenProjectResult openProjects(const Utils::FilePaths &filePaths, bool searchInDir = true); static void showOpenProjectError(const OpenProjectResult &result); static void openProjectWelcomePage(const Utils::FilePath &filePath); static void unloadProject(Project *project);