diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 971d262b7fbb506d63e6003183b6dd6fab0162e8..b784e8a8ebcb628085df57bbdf915b844c58b382 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) diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index a45ea75c00df77c4fcf1b2faa9b44b83cf5f1064..1bb580f072250364d4e600df0116ba3ca8c3eb1e 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -89,7 +89,7 @@ private slots: void handleKitChanges(); void showProperties(int index, int subIndex); void registerProject(ProjectExplorer::Project*); - void deregisterProject(ProjectExplorer::Project*); + bool deregisterProject(ProjectExplorer::Project*); void startupProjectChanged(ProjectExplorer::Project *); void removedTarget(ProjectExplorer::Target*);