diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 10b9de9fe6f..c0539a06a8a 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -722,15 +722,10 @@ void KitAspect::notifyAboutUpdate(Kit *k) k->kitUpdated(); } -KitAspectWidget::KitAspectWidget(Kit *kit, const KitAspect *ki) : m_kit(kit), - m_kitInformation(ki), m_isSticky(kit->isSticky(ki->id())) +KitAspectWidget::KitAspectWidget(Kit *kit, const KitAspect *ki) + : m_kit(kit), m_kitInformation(ki) { } -Utils::Id KitAspectWidget::kitInformationId() const -{ - return m_kitInformation->id(); -} - void KitAspectWidget::addToLayout(LayoutBuilder &builder) { QTC_ASSERT(!m_label, delete m_label); diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index 99e9a40ac6a..dc0f0bc000f 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -132,11 +132,8 @@ class PROJECTEXPLORER_EXPORT KitAspectWidget : public QObject public: KitAspectWidget(Kit *kit, const KitAspect *ki); - Utils::Id kitInformationId() const; - virtual void makeReadOnly() = 0; virtual void refresh() = 0; - bool visibleInKit() { return m_kitInformation->isApplicableToKit(m_kit); } virtual QWidget *mainWidget() const = 0; virtual QWidget *buttonWidget() const { return nullptr; } @@ -144,16 +141,14 @@ public: void addToLayout(Utils::LayoutBuilder &builder); void setVisible(bool visible); - bool isSticky() const { return m_isSticky; } - static QString msgManage(); Kit *kit() const { return m_kit; } + const KitAspect *kitInformation() const { return m_kitInformation; } protected: Kit *m_kit; const KitAspect *m_kitInformation; - bool m_isSticky; QLabel *m_label = nullptr; }; diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 7d6cde800b0..de3f7f596e8 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -223,7 +223,7 @@ void KitManagerConfigWidget::addAspectToWorkingCopy(KitAspect *aspect) action->setCheckable(true); action->setChecked(workingCopy()->isMutable(aspect->id())); - action->setEnabled(!widget->isSticky()); + action->setEnabled(!workingCopy()->isSticky(aspect->id())); widget->mainWidget()->addAction(action); widget->mainWidget()->setContextMenuPolicy(Qt::ActionsContextMenu); connect(action, &QAction::toggled, this, [this, aspect, action] { @@ -243,9 +243,10 @@ void KitManagerConfigWidget::updateVisibility() int count = m_widgets.count(); for (int i = 0; i < count; ++i) { KitAspectWidget *widget = m_widgets.at(i); - const bool visible = widget->visibleInKit() - && !m_modifiedKit->irrelevantAspects().contains(widget->kitInformationId()); - widget->setVisible(visible); + const KitAspect *ki = widget->kitInformation(); + const bool visibleInKit = ki->isApplicableToKit(m_modifiedKit.get()); + const bool irrelevant = m_modifiedKit->irrelevantAspects().contains(ki->id()); + widget->setVisible(visibleInKit && !irrelevant); } } @@ -257,7 +258,7 @@ void KitManagerConfigWidget::setHasUniqueName(bool unique) void KitManagerConfigWidget::makeStickySubWidgetsReadOnly() { foreach (KitAspectWidget *w, m_widgets) { - if (w->isSticky()) + if (w->kit()->isSticky(w->kitInformation()->id())) w->makeReadOnly(); } } diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index f255c6bbf9d..b488eab8acd 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -611,16 +611,17 @@ private: return; bool addedMutables = false; - QList knownIdList = Utils::transform(m_widgets, &KitAspectWidget::kitInformationId); + QList knownList + = Utils::transform(m_widgets, &KitAspectWidget::kitInformation); for (KitAspect *aspect : KitManager::kitAspects()) { const Utils::Id currentId = aspect->id(); - if (m_kit->isMutable(currentId) && !knownIdList.removeOne(currentId)) { + if (m_kit->isMutable(currentId) && !knownList.removeOne(aspect)) { addedMutables = true; break; } } - const bool removedMutables = !knownIdList.isEmpty(); + const bool removedMutables = !knownList.isEmpty(); if (addedMutables || removedMutables) { // Redo whole setup if the number of mutable settings did change