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 <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-09-29 12:46:00 +02:00
parent 9f3e104e37
commit db5a00231f

View File

@@ -740,6 +740,7 @@ void SessionManager::removeProjects(QList<Project *> 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<Project *> 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<Project *> remove)
delete pro;
}
if (!startupProject()) {
if (hasProjects())
setStartupProject(projects().first());
}
if (changeStartupProject)
setStartupProject(hasProjects() ? projects().first() : nullptr);
}
/*!