From fba821f5c133999724a4b8581018ae53d764cdc0 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 12 Jul 2012 13:31:35 +0200 Subject: [PATCH] Project mode: Fix crash on removing the last profile Change-Id: I0624e52a9fd176847a42a1a3379ceabc0f03661c Reviewed-by: Daniel Teske --- src/plugins/projectexplorer/projectwindow.cpp | 13 +++++++++++++ src/plugins/projectexplorer/projectwindow.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index aeb6afb17c1..b3db9c0dc57 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -273,6 +273,14 @@ void ProjectWindow::aboutToShutdown() disconnect(ProjectExplorerPlugin::instance()->session(), 0, this, 0); } +void ProjectWindow::removedTarget(Target *target) +{ + Project *p = qobject_cast(sender()); + QTC_ASSERT(p, return); + if (p->targets().isEmpty()) + projectUpdated(p); +} + void ProjectWindow::projectUpdated(Project *p) { // Called after a project was configured @@ -362,6 +370,9 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project) m_tabIndexToProject.insert(index, project); 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) @@ -372,6 +383,8 @@ void ProjectWindow::deregisterProject(ProjectExplorer::Project *project) m_tabIndexToProject.removeAt(index); m_tabWidget->removeTab(index); + disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), + this, SLOT(removedTarget(ProjectExplorer::Target*))); } void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p) diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index 5a5ec3385b0..661230f88ed 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -92,6 +92,7 @@ private slots: void registerProject(ProjectExplorer::Project*); void deregisterProject(ProjectExplorer::Project*); void startupProjectChanged(ProjectExplorer::Project *); + void removedTarget(ProjectExplorer::Target*); private: bool useTargetPage(ProjectExplorer::Project *project);