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;
|
d->m_depMap = resMap;
|
||||||
|
|
||||||
// TODO: Clear m_modelProjectHash
|
// TODO: Clear m_modelProjectHash
|
||||||
|
bool changeStartupProject = false;
|
||||||
|
|
||||||
// Delete projects
|
// Delete projects
|
||||||
foreach (Project *pro, remove) {
|
foreach (Project *pro, remove) {
|
||||||
@@ -749,7 +750,7 @@ void SessionManager::removeProjects(QList<Project *> remove)
|
|||||||
d->m_projects.removeOne(pro);
|
d->m_projects.removeOne(pro);
|
||||||
|
|
||||||
if (pro == d->m_startupProject)
|
if (pro == d->m_startupProject)
|
||||||
setStartupProject(nullptr);
|
changeStartupProject = true;
|
||||||
|
|
||||||
disconnect(pro, &Project::fileListChanged,
|
disconnect(pro, &Project::fileListChanged,
|
||||||
m_instance, &SessionManager::clearProjectFileCache);
|
m_instance, &SessionManager::clearProjectFileCache);
|
||||||
@@ -759,10 +760,8 @@ void SessionManager::removeProjects(QList<Project *> remove)
|
|||||||
delete pro;
|
delete pro;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!startupProject()) {
|
if (changeStartupProject)
|
||||||
if (hasProjects())
|
setStartupProject(hasProjects() ? projects().first() : nullptr);
|
||||||
setStartupProject(projects().first());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
Reference in New Issue
Block a user