summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-03-01 12:52:24 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-03-02 09:31:08 +0000
commit0a09ba7319d56d0d77175bf35399fbb776c20d1b (patch)
tree00b995646a29e16c2cab9dde63f6bf8bdff3a0ad /src/plugins
parent605a5817122a86580a11313b096ff2b9976b52cb (diff)
downloadqt-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.cpp21
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h1
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);