From 0ddd473cc026c2e4d33ac1a65ee8ffdeb9ac85af Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 23 Oct 2019 16:29:30 +0200 Subject: [PATCH] Target setup page: Handle slow kit manager It has been observed by users (though not reproduced here) that the target setup page would apparently appear before the kit manager was finished setting up the initial kits, leading to an empty kit list on the target setup page even after the kits were finally loaded. We now take this possibility into account. Fixes: QTCREATORBUG-22353 Change-Id: I83cdc3da45785c3badfac484a54f34859191cc37 Reviewed-by: hjk --- .../projectexplorer/targetsetuppage.cpp | 21 +++++++++++++------ src/plugins/projectexplorer/targetsetuppage.h | 2 ++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index ff317be5e6e..d80b2689c16 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -209,12 +209,12 @@ TargetSetupPage::TargetSetupPage(QWidget *parent) : void TargetSetupPage::initializePage() { - reset(); - - setupWidgets(); - setupImports(); - selectAtLeastOneKit(); - updateVisibility(); + if (KitManager::isLoaded()) { + doInitializePage(); + } else { + connect(KitManager::instance(), &KitManager::kitsLoaded, + this, &TargetSetupPage::doInitializePage); + } } void TargetSetupPage::setRequiredKitPredicate(const Kit::Predicate &predicate) @@ -494,6 +494,15 @@ void TargetSetupPage::kitFilterChanged(const QString &filterText) selectAtLeastOneKit(); } +void TargetSetupPage::doInitializePage() +{ + reset(); + setupWidgets(); + setupImports(); + selectAtLeastOneKit(); + updateVisibility(); +} + void TargetSetupPage::changeAllKitsSelections() { if (m_ui->allKitsCheckBox->checkState() == Qt::PartiallyChecked) diff --git a/src/plugins/projectexplorer/targetsetuppage.h b/src/plugins/projectexplorer/targetsetuppage.h index c0814a1ce48..e8cc7aef9e6 100644 --- a/src/plugins/projectexplorer/targetsetuppage.h +++ b/src/plugins/projectexplorer/targetsetuppage.h @@ -87,6 +87,8 @@ public: void kitFilterChanged(const QString &filterText); private: + void doInitializePage(); + void handleKitAddition(Kit *k); void handleKitRemoval(Kit *k); void handleKitUpdate(Kit *k);