Project mode: Fix crash on removing the last profile

Change-Id: I0624e52a9fd176847a42a1a3379ceabc0f03661c
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Daniel Teske
2012-07-12 13:31:35 +02:00
parent 113bd5ce7e
commit fba821f5c1
2 changed files with 14 additions and 0 deletions

View File

@@ -273,6 +273,14 @@ void ProjectWindow::aboutToShutdown()
disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0); disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0);
} }
void ProjectWindow::removedTarget(Target *target)
{
Project *p = qobject_cast<Project *>(sender());
QTC_ASSERT(p, return);
if (p->targets().isEmpty())
projectUpdated(p);
}
void ProjectWindow::projectUpdated(Project *p) void ProjectWindow::projectUpdated(Project *p)
{ {
// Called after a project was configured // Called after a project was configured
@@ -362,6 +370,9 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
m_tabIndexToProject.insert(index, project); m_tabIndexToProject.insert(index, project);
m_tabWidget->insertTab(index, project->displayName(), project->document()->fileName(), subtabs); m_tabWidget->insertTab(index, project->displayName(), project->document()->fileName(), subtabs);
connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)),
this, SLOT(removedTarget(ProjectExplorer::Target*)));
} }
void ProjectWindow::deregisterProject(ProjectExplorer::Project *project) void ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
@@ -372,6 +383,8 @@ void ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
m_tabIndexToProject.removeAt(index); m_tabIndexToProject.removeAt(index);
m_tabWidget->removeTab(index); m_tabWidget->removeTab(index);
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)),
this, SLOT(removedTarget(ProjectExplorer::Target*)));
} }
void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p) void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p)

View File

@@ -92,6 +92,7 @@ private slots:
void registerProject(ProjectExplorer::Project*); void registerProject(ProjectExplorer::Project*);
void deregisterProject(ProjectExplorer::Project*); void deregisterProject(ProjectExplorer::Project*);
void startupProjectChanged(ProjectExplorer::Project *); void startupProjectChanged(ProjectExplorer::Project *);
void removedTarget(ProjectExplorer::Target*);
private: private:
bool useTargetPage(ProjectExplorer::Project *project); bool useTargetPage(ProjectExplorer::Project *project);