diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index a72c381d3e7..fac3ee0a540 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -190,10 +191,11 @@ private: const int pos = indexOf(id); QTC_ASSERT(pos >= 0, return); - // do not handle the current index changed signal - m_removingItem = true; - m_comboBox->removeItem(pos); - m_removingItem = false; + { + // do not handle the current index changed signal + const GuardLocker locker(m_ignoreChanges); + m_comboBox->removeItem(pos); + } // update the checkbox and set the current index updateComboBox(); @@ -202,14 +204,14 @@ private: void currentCMakeToolChanged(int index) { - if (m_removingItem) + if (m_ignoreChanges.isLocked()) return; const Id id = Id::fromSetting(m_comboBox->itemData(index)); CMakeKitAspect::setCMakeTool(m_kit, id); } - bool m_removingItem = false; + Guard m_ignoreChanges; QComboBox *m_comboBox; QWidget *m_manageButton; }; diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index d62e26601b1..d75cbc1a596 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -96,19 +97,18 @@ private: void refresh() override { - if (!m_ignoreChange) + if (!m_ignoreChanges.isLocked()) m_chooser->setFilePath(SysRootKitAspect::sysRoot(m_kit)); } void pathWasChanged() { - m_ignoreChange = true; + const GuardLocker locker(m_ignoreChanges); SysRootKitAspect::setSysRoot(m_kit, m_chooser->filePath()); - m_ignoreChange = false; } PathChooser *m_chooser; - bool m_ignoreChange = false; + Guard m_ignoreChanges; }; } // namespace Internal @@ -267,7 +267,7 @@ private: void refresh() override { - m_ignoreChanges = true; + const GuardLocker locker(m_ignoreChanges); const QList keys = m_languageComboboxMap.keys(); for (const Id l : keys) { const Toolchains ltcList = ToolChainManager::toolchains(equal(&ToolChain::language, l)); @@ -283,7 +283,6 @@ private: const int index = indexOf(cb, ToolChainKitAspect::toolChain(m_kit, l)); cb->setCurrentIndex(index); } - m_ignoreChanges = false; } void makeReadOnly() override @@ -297,7 +296,7 @@ private: void currentToolChainChanged(Id language, int idx) { - if (m_ignoreChanges || idx < 0) + if (m_ignoreChanges.isLocked() || idx < 0) return; const QByteArray id = m_languageComboboxMap.value(language)->itemData(idx).toByteArray(); @@ -322,7 +321,7 @@ private: QWidget *m_mainWidget = nullptr; QWidget *m_manageButton = nullptr; QHash m_languageComboboxMap; - bool m_ignoreChanges = false; + Guard m_ignoreChanges; bool m_isReadOnly = false; }; } // namespace Internal