Fix regressions in KitMatcher

Task-number: QTCREATORBUG-13323
Change-Id: I48ddc83c40396a336a4c8e83ef4f5148e131c930
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Daniel Teske
2014-11-11 14:19:50 +01:00
parent 011ddc09c4
commit bc65b6b119
3 changed files with 11 additions and 6 deletions

View File

@@ -115,9 +115,10 @@ class PROJECTEXPLORER_EXPORT KitMatcher
{ {
public: public:
typedef std::function<bool(const Kit *)> Matcher; typedef std::function<bool(const Kit *)> Matcher;
KitMatcher() : m_matcher([](const Kit *k) -> bool { Q_UNUSED(k); return true; }) {}
KitMatcher(const Matcher &m) : m_matcher(m) {} KitMatcher(const Matcher &m) : m_matcher(m) {}
KitMatcher() {}
bool isValid() const { return !!m_matcher; }
bool matches(const Kit *kit) const { return m_matcher(kit); } bool matches(const Kit *kit) const { return m_matcher(kit); }
private: private:

View File

@@ -260,7 +260,11 @@ void TargetSetupPage::setupWidgets()
{ {
// Known profiles: // Known profiles:
QList<Kit *> kitList; QList<Kit *> kitList;
if (m_requiredMatcher.isValid())
kitList = KitManager::matchingKits(m_requiredMatcher); kitList = KitManager::matchingKits(m_requiredMatcher);
else
kitList = KitManager::kits();
foreach (Kit *k, kitList) foreach (Kit *k, kitList)
addWidget(k); addWidget(k);
@@ -374,7 +378,7 @@ void TargetSetupPage::handleKitUpdate(Kit *k)
TargetSetupWidget *widget = m_widgets.value(k->id()); TargetSetupWidget *widget = m_widgets.value(k->id());
bool acceptable = m_requiredMatcher.matches(k); bool acceptable = !m_requiredMatcher.isValid() || m_requiredMatcher.matches(k);
if (widget && !acceptable) if (widget && !acceptable)
removeWidget(k); removeWidget(k);
@@ -510,7 +514,7 @@ void TargetSetupPage::removeWidget(Kit *k)
TargetSetupWidget *TargetSetupPage::addWidget(Kit *k) TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
{ {
if (!k || !m_requiredMatcher.matches(k)) if (!k || (m_requiredMatcher.isValid() && !m_requiredMatcher.matches(k)))
return 0; return 0;
IBuildConfigurationFactory *factory IBuildConfigurationFactory *factory
@@ -528,7 +532,7 @@ TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
m_baseLayout->removeWidget(widget); m_baseLayout->removeWidget(widget);
m_baseLayout->removeItem(m_spacer); m_baseLayout->removeItem(m_spacer);
widget->setKitSelected(m_preferredMatcher.matches(k)); widget->setKitSelected(m_preferredMatcher.isValid() && m_preferredMatcher.matches(k));
m_widgets.insert(k->id(), widget); m_widgets.insert(k->id(), widget);
connect(widget, SIGNAL(selectedToggled()), connect(widget, SIGNAL(selectedToggled()),
this, SLOT(kitSelectionChanged())); this, SLOT(kitSelectionChanged()));

View File

@@ -1628,7 +1628,7 @@ bool QmakeProject::matchesKit(const Kit *kit)
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
if (!parentQts.isEmpty()) if (!parentQts.isEmpty())
return parentQts.contains(version); return parentQts.contains(version);
return true; return false;
} }
QString QmakeProject::executableFor(const QmakeProFileNode *node) QString QmakeProject::executableFor(const QmakeProFileNode *node)