summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer
diff options
context:
space:
mode:
authorjkobus <jaroslaw.kobus@digia.com>2014-07-03 16:36:17 +0200
committerDaniel Teske <daniel.teske@digia.com>2014-07-03 17:12:07 +0200
commitee36b049634d7bf21650153960e85d3e76a6d29a (patch)
tree054785cf889bb41df3ba3da37b7be4880388e9f9 /src/plugins/projectexplorer
parent1fc03107f3cd5ddddb6eb2fe49c3b6d1c48fffbb (diff)
downloadqt-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.cpp13
-rw-r--r--src/plugins/projectexplorer/projectwindow.h2
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*);