aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <[email protected]>2019-04-18 09:19:19 +0200
committerChristian Kandeler <[email protected]>2019-04-24 08:42:01 +0000
commit4dcea384ddc8d3d37cf3df2ffd8f8178c2f4a7d6 (patch)
tree73ef6b6eb38a16f135a49bf822b733e7bc1b272a
parent84055b6315688f1af269ab180eafcdfc2284d80d (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.cpp7
-rw-r--r--src/plugins/projectexplorer/kitmanagerconfigwidget.h2
-rw-r--r--src/plugins/projectexplorer/kitmodel.cpp2
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;
}