ProjectExplorer: Hide filtered items on TargetSetupPage

Instead of destroying/recreating them.

Fixes: QTCREATORBUG-29494
Change-Id: I70e673bf2fb72c0ed31248c6ea18b1fb1a8f30a8
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
hjk
2023-08-14 11:01:18 +02:00
parent e2a370f280
commit 9a69c20c40

View File

@@ -546,27 +546,10 @@ void TargetSetupPagePrivate::kitSelectionChanged()
void TargetSetupPagePrivate::kitFilterChanged(const QString &filterText)
{
QPointer<QWidget> focusWidget = QApplication::focusWidget();
// Remember selected kits:
const std::vector<TargetSetupWidget *> selectedWidgets
= filtered(m_widgets, &TargetSetupWidget::isKitSelected);
const QVector<Id> selectedKitIds = transform<QVector>(selectedWidgets,
[](const TargetSetupWidget *w) {
return w->kit()->id();
});
// Reset currently shown kits
reset();
setupWidgets(filterText);
// Re-select kits:
for (TargetSetupWidget *w : std::as_const(m_widgets))
w->setKitSelected(selectedKitIds.contains(w->kit()->id()));
emit q->completeChanged();
if (focusWidget)
focusWidget->setFocus();
for (TargetSetupWidget *widget : m_widgets) {
Kit *kit = widget->kit();
widget->setVisible(filterText.isEmpty() || kit->displayName().contains(filterText, Qt::CaseInsensitive));
}
}
void TargetSetupPagePrivate::doInitializePage()