diff options
author | hjk <hjk@qt.io> | 2016-10-13 11:25:31 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2016-10-14 12:09:44 +0000 |
commit | d78e87329f9e637de7742cffd167810cc95565cb (patch) | |
tree | dac3943b72b18da6f7447b629b7be02c7fe7c648 /src/plugins/projectexplorer/targetsettingspanel.cpp | |
parent | 35f6a0b95446a01b6713a62090c871c894761b15 (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.cpp | 22 |
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) |