forked from qt-creator/qt-creator
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:
@@ -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)
|
||||||
|
|||||||
@@ -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*);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user