From b9ae4c7ad02bf64cc8ffcca1012d63709d4df0f4 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 2 Apr 2019 15:08:28 +0200 Subject: [PATCH] ProjectExplorer: Do not auto-remove manually added toolchains Fixes: QTCREATORBUG-22128 Change-Id: I73dff369542b6918bcb96fb7d028822e5aed2062 Reviewed-by: hjk --- src/plugins/projectexplorer/toolchainoptionspage.cpp | 8 ++++++-- .../projectexplorer/toolchainsettingsaccessor.cpp | 11 ++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index eff7f3a408e..dffc23b7501 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -84,17 +85,20 @@ public: if (column == 0) return toolChain->displayName(); return toolChain->typeDisplayName(); - case Qt::FontRole: { QFont font; font.setBold(changed); return font; } - case Qt::ToolTipRole: + if (!toolChain->isValid()) + return ToolChainOptionsPage::tr("This toolchain is no longer valid."); return ToolChainOptionsPage::tr("ABI: %1").arg( changed ? ToolChainOptionsPage::tr("not up-to-date") : toolChain->targetAbi().toString()); + case Qt::DecorationRole: + return column == 0 && !toolChain->isValid() + ? Utils::Icons::CRITICAL.icon() : QVariant(); } return QVariant(); } diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp index 80d280a1227..e66dbee0185 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp @@ -164,12 +164,9 @@ static ToolChainOperations mergeToolChainLists(const QList &systemF const QList notRedetectedButValidUserTcs = Utils::filtered(notRedetectedUserTcs, &ToolChain::isValid); - const QList validManualUserTcs - = Utils::filtered(manualUserFileTcs, &ToolChain::isValid); - ToolChainOperations result; result.toDemote = notRedetectedButValidUserTcs; - result.toRegister = stabilizeOrder(systemFileTcs + validManualUserTcs + result.toDemote // manual TCs + result.toRegister = stabilizeOrder(systemFileTcs + manualUserFileTcs + result.toDemote // manual TCs + redetectedUserTcs + newlyAutodetectedTcs, // auto TCs userFileTcs); @@ -225,7 +222,7 @@ void ToolChainSettingsAccessor::saveToolChains(const QList &toolcha int count = 0; for (const ToolChain *tc : toolchains) { - if (!tc || !tc->isValid()) + if (!tc || (!tc->isValid() && tc->isAutoDetected())) continue; const QVariantMap tmp = tc->toMap(); if (tmp.isEmpty()) @@ -424,9 +421,9 @@ void ProjectExplorerPlugin::testToolChainMerging_data() << (TCList()) << (TCList() << auto3i) << (TCList()) << (TCList()) << (TCList()); - QTest::newRow("Delete invalid user") + QTest::newRow("invalid user") << (TCList()) << (TCList() << user3i) << (TCList()) - << (TCList()) << (TCList()); + << (TCList()) << (TCList{user3i}); QTest::newRow("one of everything") << (TCList() << system1) << (TCList() << user1) << (TCList() << auto1)