From db5a00231f2b55aa08b32cccf6432c0b86ae3206 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 29 Sep 2017 12:46:00 +0200 Subject: [PATCH] Session: Fix removal of projects When removing a project setStartupProject(nullptr) may fail, since it will reject any attempt to set the startupProject to nullptr while any project is still available. So delay this till nullptr is an option:-) Change-Id: I6f41a17d922cf6333b7b7e17f8300e831e4807d9 Reviewed-by: Tim Jenssen --- src/plugins/projectexplorer/session.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 6d7a4ef7641..55b00e500ee 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -740,6 +740,7 @@ void SessionManager::removeProjects(QList remove) d->m_depMap = resMap; // TODO: Clear m_modelProjectHash + bool changeStartupProject = false; // Delete projects foreach (Project *pro, remove) { @@ -749,7 +750,7 @@ void SessionManager::removeProjects(QList remove) d->m_projects.removeOne(pro); if (pro == d->m_startupProject) - setStartupProject(nullptr); + changeStartupProject = true; disconnect(pro, &Project::fileListChanged, m_instance, &SessionManager::clearProjectFileCache); @@ -759,10 +760,8 @@ void SessionManager::removeProjects(QList remove) delete pro; } - if (!startupProject()) { - if (hasProjects()) - setStartupProject(projects().first()); - } + if (changeStartupProject) + setStartupProject(hasProjects() ? projects().first() : nullptr); } /*!