diff options
author | Daniel Teske <daniel.teske@nokia.com> | 2012-07-12 13:31:35 +0200 |
---|---|---|
committer | Daniel Teske <daniel.teske@nokia.com> | 2012-07-16 13:09:23 +0200 |
commit | fba821f5c133999724a4b8581018ae53d764cdc0 (patch) | |
tree | d45dd7d5aa00ede6debb1f678bd65aba4c92ef87 /src/plugins/projectexplorer | |
parent | 113bd5ce7e7e220d692b6d9fa559ec608de5ca4b (diff) | |
download | qt-creator-fba821f5c133999724a4b8581018ae53d764cdc0.tar.gz |
Project mode: Fix crash on removing the last profile
Change-Id: I0624e52a9fd176847a42a1a3379ceabc0f03661c
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.cpp | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index aeb6afb17c..b3db9c0dc5 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<Project *>(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 5a5ec3385b..661230f88e 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); |