Fix a crash on session switch

Done by Daniel

Task-number: QTCREATORBUG-12613
Change-Id: I716c1b73cd7e0c934b8b2e3090af1de4d987a191
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
jkobus
2014-07-03 16:36:17 +02:00
committed by Daniel Teske
parent 1fc03107f3
commit ee36b04963
2 changed files with 8 additions and 7 deletions

View File

@@ -290,7 +290,7 @@ void ProjectWindow::projectUpdated(Project *p)
{ {
// Called after a project was configured // Called after a project was configured
int index = m_tabWidget->currentIndex(); int index = m_tabWidget->currentIndex();
deregisterProject(p); if (deregisterProject(p)) // might return false if the project is unloading
registerProject(p); registerProject(p);
m_tabWidget->setCurrentIndex(index); m_tabWidget->setCurrentIndex(index);
} }
@@ -303,7 +303,7 @@ void ProjectWindow::handleKitChanges()
foreach (ProjectExplorer::Project *project, projects) { foreach (ProjectExplorer::Project *project, projects) {
if (m_hasTarget.value(project) != hasTarget(project)) { if (m_hasTarget.value(project) != hasTarget(project)) {
changed = true; changed = true;
deregisterProject(project); if (deregisterProject(project))
registerProject(project); registerProject(project);
} }
} }
@@ -354,16 +354,17 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
this, SLOT(removedTarget(ProjectExplorer::Target*))); this, SLOT(removedTarget(ProjectExplorer::Target*)));
} }
void ProjectWindow::deregisterProject(ProjectExplorer::Project *project) bool ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
{ {
int index = m_tabIndexToProject.indexOf(project); int index = m_tabIndexToProject.indexOf(project);
if (index < 0) if (index < 0)
return; return false;
m_tabIndexToProject.removeAt(index); m_tabIndexToProject.removeAt(index);
m_tabWidget->removeTab(index); m_tabWidget->removeTab(index);
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)),
this, SLOT(removedTarget(ProjectExplorer::Target*))); this, SLOT(removedTarget(ProjectExplorer::Target*)));
return true;
} }
void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p) void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p)

View File

@@ -89,7 +89,7 @@ private slots:
void handleKitChanges(); void handleKitChanges();
void showProperties(int index, int subIndex); void showProperties(int index, int subIndex);
void registerProject(ProjectExplorer::Project*); void registerProject(ProjectExplorer::Project*);
void deregisterProject(ProjectExplorer::Project*); bool deregisterProject(ProjectExplorer::Project*);
void startupProjectChanged(ProjectExplorer::Project *); void startupProjectChanged(ProjectExplorer::Project *);
void removedTarget(ProjectExplorer::Target*); void removedTarget(ProjectExplorer::Target*);