diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 9c4184c5395914fd687a1926eb6b087142232763..da09cb706cb65e13e510ee0af0bd9511fdf9dea6 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -112,7 +112,7 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) : this, SLOT(targetWasAdded(ProjectExplorer::Target*))); connect(this, SIGNAL(environmentChanged()), this, SLOT(delayParsing())); - connect(&m_parsingDelay, SIGNAL(timeout()), this, SLOT(parseCurrentBuildConfiguration())); + connect(&m_parsingDelay, SIGNAL(timeout()), this, SLOT(startParsing())); updateDocuments(QSet<QString>() << fileName); @@ -357,6 +357,11 @@ void QbsProject::buildConfigurationChanged(BuildConfiguration *bc) } } +void QbsProject::startParsing() +{ + parseCurrentBuildConfiguration(false); +} + void QbsProject::delayParsing() { m_parsingDelay.start(); @@ -368,10 +373,13 @@ void QbsProject::delayForcedParsing() delayParsing(); } -void QbsProject::parseCurrentBuildConfiguration() +void QbsProject::parseCurrentBuildConfiguration(bool force) { m_parsingDelay.stop(); + if (!m_forceParsing) + m_forceParsing = force; + if (!activeTarget()) return; QbsBuildConfiguration *bc = qobject_cast<QbsBuildConfiguration *>(activeTarget()->activeBuildConfiguration()); diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index d43ead569cfb910610623aabb002925d06d00c54..d113684a93837065c617c9debe45f47c89c0fe88 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -90,6 +90,7 @@ public: QString profileForTarget(const ProjectExplorer::Target *t) const; bool isParsing() const; bool hasParseResult() const; + void parseCurrentBuildConfiguration(bool force); Utils::FileName defaultBuildDirectory() const; static Utils::FileName defaultBuildDirectory(const QString &path); @@ -101,7 +102,6 @@ public: public slots: void invalidate(); - void parseCurrentBuildConfiguration(); void delayParsing(); void delayForcedParsing(); @@ -117,6 +117,7 @@ private slots: void targetWasAdded(ProjectExplorer::Target *t); void changeActiveTarget(ProjectExplorer::Target *t); void buildConfigurationChanged(ProjectExplorer::BuildConfiguration *bc); + void startParsing(); private: bool fromMap(const QVariantMap &map); diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index f02597b715ed21f8f6784d087ae3b221cc514c1b..070d424886fbed1337a708fab0ae86e891b82546 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -405,7 +405,7 @@ void QbsProjectManagerPlugin::buildProducts(QbsProject *project, const QStringLi void QbsProjectManagerPlugin::reparseCurrentProject() { if (m_currentProject) - m_currentProject->parseCurrentBuildConfiguration(); + m_currentProject->parseCurrentBuildConfiguration(true); } } // namespace Internal