From 1e1cc8cd44ce7fa71deb3f5e5db3b7cf34dbed29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sivert=20Kr=C3=B8vel?= Date: Thu, 9 Feb 2023 15:29:57 +0100 Subject: [PATCH] McuSupport: Expand path macros when resetting paths Path macros were expanded when applying new paths in the McuSupport options widget, but not when pushing the reset button. This resulted in paths like {Env:PROGRAMFILES}/SEGGER/JLink, which are displayed as an error in the UI. The reset-button is now connected via a signal in McuPackage to the options widget, since the macro expander is not accessible to the package object directly. Task-number: QTCREATORBUG-28500 Change-Id: I962c6eb83142be87e02debbf34f0602683fe6966 Reviewed-by: Reviewed-by: Yasser Grimes Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcuabstractpackage.h | 1 + src/plugins/mcusupport/mcupackage.cpp | 4 +--- src/plugins/mcusupport/mcusupportoptionspage.cpp | 9 +++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/plugins/mcusupport/mcuabstractpackage.h b/src/plugins/mcusupport/mcuabstractpackage.h index 33e9e62bd32..c319c32f03c 100644 --- a/src/plugins/mcusupport/mcuabstractpackage.h +++ b/src/plugins/mcusupport/mcuabstractpackage.h @@ -55,6 +55,7 @@ public: signals: void changed(); void statusChanged(); + void reset(); }; // class McuAbstractPackage } // namespace McuSupport::Internal diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index 6feaf728a62..ccf3a2d3acd 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -256,9 +256,7 @@ QWidget *McuPackage::widget() m_fileChooser->setExpectedKind(m_valueType); m_fileChooser->lineEdit()->setButtonIcon(FancyLineEdit::Right, Icons::RESET.icon()); m_fileChooser->lineEdit()->setButtonVisible(FancyLineEdit::Right, true); - connect(m_fileChooser->lineEdit(), &FancyLineEdit::rightButtonClicked, this, [&] { - m_fileChooser->setFilePath(m_defaultPath); - }); + connect(m_fileChooser->lineEdit(), &FancyLineEdit::rightButtonClicked, this, &McuPackage::reset); auto layout = new QGridLayout(widget); layout->setContentsMargins(0, 0, 0, 0); diff --git a/src/plugins/mcusupport/mcusupportoptionspage.cpp b/src/plugins/mcusupport/mcusupportoptionspage.cpp index c24785c0db8..d75568a8f66 100644 --- a/src/plugins/mcusupport/mcusupportoptionspage.cpp +++ b/src/plugins/mcusupport/mcusupportoptionspage.cpp @@ -277,6 +277,15 @@ void McuSupportOptionsWidget::showMcuTargetPackages() for (const auto &package : packages) { QWidget *packageWidget = package->widget(); + QWeakPointer packagePtr(package); + connect(package.get(), &McuPackage::reset, this, [this, packagePtr] (){ + McuPackagePtr package = packagePtr.lock(); + if (package) { + MacroExpanderPtr macroExpander + = m_options.sdkRepository.getMacroExpander(*currentMcuTarget()); + package->setPath(macroExpander->expand(package->defaultPath())); + } + }); m_packagesLayout->addRow(package->label(), packageWidget); packageWidget->show(); }