From 9bfc0a5b26d3153a5b6a7aea135f39f44f49bf55 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Wed, 9 Nov 2022 13:47:04 +0100 Subject: [PATCH] McuSupport: Sort displayed UI elements The elements are sorted by their CMake variable to keep the order consistent. Otherwise they would be sorted by their pointer, which leads to a random order every time. Task-number: UL-6614 Change-Id: Ie3520fb312044ccca4c9dc853e00ae2710b28d1c Reviewed-by: Reviewed-by: Yasser Grimes Reviewed-by: hjk --- src/plugins/mcusupport/mcusupportoptionspage.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index 7f594d03e0c..116b11776f6 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -247,6 +247,15 @@ void McuSupportOptionsWidget::updateStatus() } } +struct McuPackageSort { + bool operator()(McuPackagePtr a, McuPackagePtr b) const { + if (a->cmakeVariableName() != b->cmakeVariableName()) + return a->cmakeVariableName() > b->cmakeVariableName(); + else + return a->environmentVariableName() > b->environmentVariableName(); + } +}; + void McuSupportOptionsWidget::showMcuTargetPackages() { McuTargetPtr mcuTarget = currentMcuTarget(); @@ -257,9 +266,15 @@ void McuSupportOptionsWidget::showMcuTargetPackages() m_packagesLayout->removeRow(0); } + std::set packages; + for (const auto &package : mcuTarget->packages()) { if (package->label().isEmpty()) continue; + packages.insert(package); + } + + for (const auto &package : packages) { QWidget *packageWidget = package->widget(); m_packagesLayout->addRow(package->label(), packageWidget); packageWidget->show();