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:
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() {}
bool isValid() const { return !!m_matcher; }
bool matches(const Kit *kit) const { return m_matcher(kit); }
private:

View File

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

View File

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