diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index eb3191e60e3..f82715addea 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -275,7 +275,7 @@ bool QbsProject::addFilesToProduct(const QStringList &filePaths, } if (notAdded->count() != filePaths.count()) { m_projectData = m_qbsProject.projectData(); - rebuildProjectTree(); + delayedUpdateAfterParse(); } return notAdded->isEmpty(); } @@ -302,8 +302,7 @@ bool QbsProject::removeFilesFromProduct(const QStringList &filePaths, } if (notRemoved->count() != filePaths.count()) { m_projectData = m_qbsProject.projectData(); - rebuildProjectTree(); - emit fileListChanged(); + delayedUpdateAfterParse(); } return notRemoved->isEmpty(); } @@ -472,6 +471,11 @@ void QbsProject::updateAfterParse() emit fileListChanged(); } +void QbsProject::delayedUpdateAfterParse() +{ + QTimer::singleShot(0, this, &QbsProject::updateAfterParse); +} + void QbsProject::updateProjectNodes() { OpTimer opTimer("updateProjectNodes"); diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index fa12083716a..055618e6e12 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -136,6 +136,7 @@ private: void handleRuleExecutionDone(); bool checkCancelStatus(); void updateAfterParse(); + void delayedUpdateAfterParse(); void updateProjectNodes(); void projectLoaded() override;