aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/targetsettingspanel.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2016-10-13 11:25:31 +0200
committerhjk <hjk@qt.io>2016-10-14 12:09:44 +0000
commitd78e87329f9e637de7742cffd167810cc95565cb (patch)
treedac3943b72b18da6f7447b629b7be02c7fe7c648 /src/plugins/projectexplorer/targetsettingspanel.cpp
parent35f6a0b95446a01b6713a62090c871c894761b15 (diff)
ProjectExplorer: Filter out unusable kits
As side-effect, fix missing expansion of subitems in some cases. Task-number: QTCREATORBUG-17110 Change-Id: Ib0c74e968d6d814f9dadbb37b323c8ac68cda310 Reviewed-by: Robert Loehning <robert.loehning@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/targetsettingspanel.cpp')
-rw-r--r--src/plugins/projectexplorer/targetsettingspanel.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp
index 8e380a3704..0700dbe4a7 100644
--- a/src/plugins/projectexplorer/targetsettingspanel.cpp
+++ b/src/plugins/projectexplorer/targetsettingspanel.cpp
@@ -212,6 +212,7 @@ public:
void handleRemovedKit(Kit *kit);
void handleAddedKit(Kit *kit);
+ void handleUpdatedKit(Kit *kit);
void handleTargetAdded(Target *target);
void handleTargetRemoved(Target *target);
@@ -755,6 +756,8 @@ TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q, Project *proj
this, &TargetGroupItemPrivate::handleAddedKit);
connect(KitManager::instance(), &KitManager::kitRemoved,
this, &TargetGroupItemPrivate::handleRemovedKit);
+ connect(KitManager::instance(), &KitManager::kitUpdated,
+ this, &TargetGroupItemPrivate::handleUpdatedKit);
rebuildContents();
}
@@ -789,7 +792,7 @@ QVariant TargetGroupItem::data(int column, int role) const
bool TargetGroupItem::setData(int column, const QVariant &data, int role)
{
Q_UNUSED(data)
- if (role == ItemActivatedFromBelowRole) {
+ if (role == ItemActivatedFromBelowRole || role == ItemUpdatedFromBelowRole) {
// Bubble up to trigger setting the active project.
parent()->setData(column, QVariant::fromValue(static_cast<TreeItem *>(this)), role);
return true;
@@ -823,9 +826,16 @@ void TargetGroupItemPrivate::handleRemovedKit(Kit *kit)
rebuildContents();
}
+void TargetGroupItemPrivate::handleUpdatedKit(Kit *kit)
+{
+ Q_UNUSED(kit);
+ rebuildContents();
+}
+
void TargetGroupItemPrivate::handleAddedKit(Kit *kit)
{
- q->appendChild(new TargetItem(m_project, kit->id()));
+ if (m_project->supportsKit(kit))
+ q->appendChild(new TargetItem(m_project, kit->id()));
}
void TargetItem::updateSubItems()
@@ -843,8 +853,14 @@ void TargetGroupItemPrivate::rebuildContents()
{
q->removeChildren();
- foreach (Kit *kit, KitManager::sortKits(KitManager::kits()))
+ KitMatcher matcher([this](const Kit *kit) { return m_project->supportsKit(const_cast<Kit *>(kit)); });
+ const QList<Kit *> kits = KitManager::sortKits(KitManager::matchingKits(matcher));
+ for (Kit *kit : kits)
q->appendChild(new TargetItem(m_project, kit->id()));
+
+ if (q->parent())
+ q->parent()->setData(0, QVariant::fromValue(static_cast<TreeItem *>(q)),
+ ItemUpdatedFromBelowRole);
}
void TargetGroupItemPrivate::handleTargetAdded(Target *target)