diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-01 12:52:24 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-02 09:31:08 +0000 |
commit | 0a09ba7319d56d0d77175bf35399fbb776c20d1b (patch) | |
tree | 00b995646a29e16c2cab9dde63f6bf8bdff3a0ad /src/plugins | |
parent | 605a5817122a86580a11313b096ff2b9976b52cb (diff) | |
download | qt-creator-0a09ba7319d56d0d77175bf35399fbb776c20d1b.tar.gz |
CMake: Make sure BuildConfiguration enabled state is accurate
Make sure the buildconfiguration is disabled while parsing and that
it becomes enabled again after an error in CMake is fixed.
Change-Id: Iec919e3c74c465a14ebb87adb9af142537823f00
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp | 21 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h | 1 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 062decf2d8..beb1c4ed58 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -77,7 +77,7 @@ CMakeBuildConfiguration::~CMakeBuildConfiguration() bool CMakeBuildConfiguration::isEnabled() const { - return m_error.isEmpty(); + return m_error.isEmpty() && !isParsing(); } QString CMakeBuildConfiguration::disabledReason() const @@ -145,6 +145,7 @@ void CMakeBuildConfiguration::ctor() connect(m_buildDirManager.get(), &BuildDirManager::dataAvailable, this, [this, project]() { project->updateProjectData(this); + emit enabledChanged(); emit dataAvailable(); }); connect(m_buildDirManager.get(), &BuildDirManager::errorOccured, @@ -155,6 +156,7 @@ void CMakeBuildConfiguration::ctor() connect(m_buildDirManager.get(), &BuildDirManager::configurationStarted, this, [this, project]() { project->handleParsingStarted(); + emit enabledChanged(); emit parsingStarted(); }); @@ -166,6 +168,7 @@ void CMakeBuildConfiguration::ctor() void CMakeBuildConfiguration::maybeForceReparse() { + clearError(); m_buildDirManager->maybeForceReparse(); } @@ -194,6 +197,7 @@ void CMakeBuildConfiguration::runCMake() if (!m_buildDirManager || m_buildDirManager->isParsing()) return; + clearError(); m_buildDirManager->forceReparse(); } @@ -339,6 +343,14 @@ void CMakeBuildConfiguration::setCurrentCMakeConfiguration(const QList<ConfigMod m_buildDirManager->forceReparse(); } +void CMakeBuildConfiguration::clearError() +{ + if (!m_error.isEmpty()) { + m_error.clear(); + emit enabledChanged(); + } +} + void CMakeBuildConfiguration::emitBuildTypeChanged() { emit buildTypeChanged(); @@ -388,10 +400,11 @@ CMakeConfig CMakeBuildConfiguration::cmakeConfiguration() const void CMakeBuildConfiguration::setError(const QString &message) { - if (m_error != message) { - emit enabledChanged(); + QString oldMessage = m_error; + if (m_error != message) m_error = message; - } + if (oldMessage.isEmpty() && !message.isEmpty()) + emit enabledChanged(); emit errorOccured(m_error); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 1afd9c33d7..e6e8713f2d 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -112,6 +112,7 @@ private: QList<ConfigModel::DataItem> completeCMakeConfiguration() const; void setCurrentCMakeConfiguration(const QList<ConfigModel::DataItem> &items); + void clearError(); void setError(const QString &message); void setWarning(const QString &message); |