diff options
author | Christian Kandeler <[email protected]> | 2019-04-18 09:19:19 +0200 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2019-04-24 08:42:01 +0000 |
commit | 4dcea384ddc8d3d37cf3df2ffd8f8178c2f4a7d6 (patch) | |
tree | 73ef6b6eb38a16f135a49bf822b733e7bc1b272a | |
parent | 84055b6315688f1af269ab180eafcdfc2284d80d (diff) |
ProjectExplorer: Fix kit duplication on pressing "Apply"
The KitModel's check against adding the same kit again relied on the new
Kit object already existing before it is registered, which is no longer
true since 3aea3a13cb.
Instead, we now have a flag indicating that registration of a currently
temporary kit is currently ongoing.
Change-Id: I6d2da19188b63d5ec68e11b5804ecf7c5e88676a
Reviewed-by: Christian Stenger <[email protected]>
-rw-r--r-- | src/plugins/projectexplorer/kitmanagerconfigwidget.cpp | 7 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmanagerconfigwidget.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmodel.cpp | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 9839367fe71..46cba9ab1c6 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -160,10 +160,13 @@ QIcon KitManagerConfigWidget::icon() const void KitManagerConfigWidget::apply() { const auto copyIntoKit = [this](Kit *k) { k->copyFrom(m_modifiedKit.get()); }; - if (m_kit) + if (m_kit) { copyIntoKit(m_kit); - else + } else { + m_isRegistering = true; m_kit = KitManager::registerKit(copyIntoKit); + m_isRegistering = false; + } if (m_isDefaultKit) KitManager::setDefaultKit(m_kit); emit dirty(); diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 8617a118cf5..9eda98582d9 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -65,6 +65,7 @@ public: Kit *workingCopy() const; bool configures(Kit *k) const; + bool isRegistering() const { return m_isRegistering; } void setIsDefaultKit(bool d); bool isDefaultKit() const; void removeKit(); @@ -104,6 +105,7 @@ private: bool m_isDefaultKit = false; bool m_fixingKit = false; bool m_hasUniqueName = true; + bool m_isRegistering = false; QList<QAction *> m_actions; mutable QString m_cachedDisplayName; }; diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index 7795f3f02cf..5e9f1ad561c 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -309,7 +309,7 @@ void KitModel::addKit(Kit *k) { for (TreeItem *n : *m_manualRoot) { // Was added by us - if (static_cast<KitNode *>(n)->widget->configures(k)) + if (static_cast<KitNode *>(n)->widget->isRegistering()) return; } |