diff options
author | jkobus <jaroslaw.kobus@digia.com> | 2014-07-03 16:36:17 +0200 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-07-03 17:12:07 +0200 |
commit | ee36b049634d7bf21650153960e85d3e76a6d29a (patch) | |
tree | 054785cf889bb41df3ba3da37b7be4880388e9f9 /src/plugins/projectexplorer | |
parent | 1fc03107f3cd5ddddb6eb2fe49c3b6d1c48fffbb (diff) | |
download | qt-creator-ee36b049634d7bf21650153960e85d3e76a6d29a.tar.gz |
Fix a crash on session switch
Done by Daniel
Task-number: QTCREATORBUG-12613
Change-Id: I716c1b73cd7e0c934b8b2e3090af1de4d987a191
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.cpp | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.h | 2 |
2 files changed, 8 insertions, 7 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) diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index a45ea75c00..1bb580f072 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*); |