From 1722a3c83778bf70c2b660907918aaaa3380b065 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 5 Feb 2020 12:52:37 +0100 Subject: [PATCH] TargetSetupPage: Keep selected kits selected on filter change If a selected kit stays visible after a kit filter change, then keep this kit selected. Kits that do not get matched by the filter are unselected automatically. I find this way more intuitive to use: E.g. when you filter a selection, check something while filtered and then reset the filter the selection now stays. Change-Id: Ib557d5149a2009725a946183445911f13db76af5 Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/targetsetuppage.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index d82307a51f5..e7ece0a9b4b 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -498,9 +498,21 @@ void TargetSetupPage::kitSelectionChanged() void TargetSetupPage::kitFilterChanged(const QString &filterText) { + // Remember selected kits: + const std::vector selectedWidgets + = filtered(m_widgets, &TargetSetupWidget::isKitSelected); + const QVector selectedKitIds = transform(selectedWidgets, + [](const TargetSetupWidget *w) { + return w->kit()->id(); + }); + // Reset currently shown kits reset(); setupWidgets(filterText); + + // Re-select kits: + for (TargetSetupWidget *w : qAsConst(m_widgets)) + w->setKitSelected(selectedKitIds.contains(w->kit()->id())); } void TargetSetupPage::doInitializePage()