summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/projectwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/projectwindow.cpp')
-rw-r--r--src/plugins/projectexplorer/projectwindow.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 971d262b7f..b784e8a8eb 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -290,8 +290,8 @@ void ProjectWindow::projectUpdated(Project *p)
{
// Called after a project was configured
int index = m_tabWidget->currentIndex();
- deregisterProject(p);
- registerProject(p);
+ if (deregisterProject(p)) // might return false if the project is unloading
+ registerProject(p);
m_tabWidget->setCurrentIndex(index);
}
@@ -303,8 +303,8 @@ void ProjectWindow::handleKitChanges()
foreach (ProjectExplorer::Project *project, projects) {
if (m_hasTarget.value(project) != hasTarget(project)) {
changed = true;
- deregisterProject(project);
- registerProject(project);
+ if (deregisterProject(project))
+ registerProject(project);
}
}
if (changed)
@@ -354,16 +354,17 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
this, SLOT(removedTarget(ProjectExplorer::Target*)));
}
-void ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
+bool ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
{
int index = m_tabIndexToProject.indexOf(project);
if (index < 0)
- return;
+ return false;
m_tabIndexToProject.removeAt(index);
m_tabWidget->removeTab(index);
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)),
this, SLOT(removedTarget(ProjectExplorer::Target*)));
+ return true;
}
void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p)