From 9c8079f0914562723c48cd03fb51a018bc973ff9 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin <daniel.molkentin@nokia.com> Date: Mon, 12 Apr 2010 18:18:45 +0200 Subject: [PATCH] Keep targets in the minitargetselector sync with the project settings Task-number: QTCREATORBUG-1097 Reviewed-by: dt --- .../miniprojecttargetselector.cpp | 19 +++++++++++++++++++ .../miniprojecttargetselector.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 89028951573..b71e78f07f5 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -461,6 +461,8 @@ void MiniProjectTargetSelector::addProject(ProjectExplorer::Project* project) SLOT(addTarget(ProjectExplorer::Target*))); connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), SLOT(removeTarget(ProjectExplorer::Target*))); + connect(project, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), + SLOT(changeActiveTarget(ProjectExplorer::Target*))); if (project == ProjectExplorerPlugin::instance()->startupProject()) { m_projectsBox->setCurrentIndex(pos); @@ -546,6 +548,23 @@ void MiniProjectTargetSelector::removeTarget(ProjectExplorer::Target *target) disconnect(target, SIGNAL(overlayIconChanged()), this, SLOT(updateAction())); } +void MiniProjectTargetSelector::changeActiveTarget(ProjectExplorer::Target *target) +{ + int index = indexFor(target->project()); + if (index < 0) + return; + ProjectListWidget *plw = qobject_cast<ProjectListWidget*>(m_widgetStack->widget(index)); + + for (int i = 0; i < plw->count(); ++i) { + QListWidgetItem *itm = plw->item(i); + MiniTargetWidget *mtw = qobject_cast<MiniTargetWidget*>(plw->itemWidget(itm)); + if (mtw->target() == target) { + plw->setCurrentItem(itm); + break; + } + } +} + void MiniProjectTargetSelector::updateAction() { Project *project = ProjectExplorerPlugin::instance()->startupProject(); diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.h b/src/plugins/projectexplorer/miniprojecttargetselector.h index 5b2cbd588a4..faffe3d8bb8 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.h +++ b/src/plugins/projectexplorer/miniprojecttargetselector.h @@ -125,6 +125,7 @@ private slots: void removeProject(ProjectExplorer::Project *project); void addTarget(ProjectExplorer::Target *target, bool isActiveTarget = false); void removeTarget(ProjectExplorer::Target *target); + void changeActiveTarget(ProjectExplorer::Target *target); void emitStartupProjectChanged(int index); void changeStartupProject(ProjectExplorer::Project *project); void updateAction(); -- GitLab