forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
Reference in New Issue
Block a user