From f9f43f749253a527e4d73bcdf2585e5531eb9521 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 19 Jan 2024 10:49:08 +0100 Subject: [PATCH] ProjectExplorer: Let KitAspect pre-select a settings page item ... when the "Manage" button is clicked. Make use of this in the device settings page. Fixes: QTCREATORBUG-25077 Change-Id: I1173a72d4c538c839c3e8df278a698b74bd6fca2 Reviewed-by: Reviewed-by: hjk --- .../projectexplorer/devicesupport/devicesettingspage.cpp | 8 +++++++- src/plugins/projectexplorer/kitaspects.cpp | 2 ++ src/plugins/projectexplorer/kitmanager.cpp | 2 +- src/plugins/projectexplorer/kitmanager.h | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp index cb3bac4297d..ea35fe72b68 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp @@ -190,7 +190,13 @@ DeviceSettingsWidget::DeviceSettingsWidget() addButton->setEnabled(hasDeviceFactories); - int lastIndex = ICore::settings()->value(LastDeviceIndexKey, 0).toInt(); + int lastIndex = -1; + if (const Id deviceToSelect = preselectedOptionsPageItem(Constants::DEVICE_SETTINGS_PAGE_ID); + deviceToSelect.isValid()) { + lastIndex = m_deviceManagerModel->indexForId(deviceToSelect); + } + if (lastIndex == -1) + lastIndex = ICore::settings()->value(LastDeviceIndexKey, 0).toInt(); if (lastIndex == -1) lastIndex = 0; if (lastIndex < m_configurationComboBox->count()) diff --git a/src/plugins/projectexplorer/kitaspects.cpp b/src/plugins/projectexplorer/kitaspects.cpp index b73d38a8501..281a59d25b1 100644 --- a/src/plugins/projectexplorer/kitaspects.cpp +++ b/src/plugins/projectexplorer/kitaspects.cpp @@ -897,6 +897,8 @@ private: void makeReadOnly() override { m_comboBox->setEnabled(false); } + Id settingsPageItemToPreselect() const override { return DeviceKitAspect::deviceId(m_kit); } + void refresh() override { m_model->setTypeFilter(DeviceTypeKitAspect::deviceTypeId(m_kit)); diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 2aa15d6608e..c32742b4754 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -796,7 +796,7 @@ void KitAspect::addToLayout(Layouting::LayoutItem &parentItem) if (m_managingPageId.isValid()) { m_manageButton = createSubWidget(msgManage()); connect(m_manageButton, &QPushButton::clicked, [this] { - Core::ICore::showOptionsDialog(m_managingPageId); + Core::ICore::showOptionsDialog(m_managingPageId, settingsPageItemToPreselect()); }); parentItem.addItem(m_manageButton); } diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index 401cf292225..4146d440e0b 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -125,6 +125,7 @@ public: protected: virtual void makeReadOnly() {} virtual void addToLayoutImpl(Layouting::LayoutItem &parentItem) = 0; + virtual Utils::Id settingsPageItemToPreselect() const { return {}; } Kit *m_kit; const KitAspectFactory *m_factory;