summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
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);