aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprojectmanager
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmlprojectmanager')
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp9
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.h21
2 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index fc622179cae..fe7542e8cbe 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -57,11 +57,16 @@
#include <QDebug>
#include <QRegularExpression>
#include <QTextCodec>
+#include <QLoggingCategory>
using namespace Core;
using namespace ProjectExplorer;
using namespace QmlProjectManager::Internal;
+namespace {
+Q_LOGGING_CATEGORY(infoLogger, "QmlProjectManager.QmlBuildSystem", QtInfoMsg)
+}
+
namespace QmlProjectManager {
QmlProject::QmlProject(const Utils::FilePath &fileName)
@@ -276,6 +281,10 @@ QStringList QmlBuildSystem::makeAbsolute(const Utils::FilePath &path, const QStr
void QmlBuildSystem::refreshFiles(const QSet<QString> &/*added*/, const QSet<QString> &removed)
{
+ if (m_blockFilesUpdate) {
+ qCDebug(infoLogger) << "Auto files refresh blocked.";
+ return;
+ }
refresh(Files);
if (!removed.isEmpty()) {
if (auto modelManager = QmlJS::ModelManagerInterface::instance())
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 0cff1528984..acd8bc1094e 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -104,6 +104,27 @@ public:
QPointer<QmlProjectItem> m_projectItem;
Utils::FilePath m_canonicalProjectDir;
+
+private:
+ bool m_blockFilesUpdate = false;
+ friend class FilesUpdateBlocker;
+};
+
+class FilesUpdateBlocker {
+public:
+ FilesUpdateBlocker(QmlBuildSystem* bs): m_bs(bs) {
+ if (m_bs)
+ m_bs->m_blockFilesUpdate = true;
+ }
+
+ ~FilesUpdateBlocker() {
+ if (m_bs) {
+ m_bs->m_blockFilesUpdate = false;
+ m_bs->refresh(QmlBuildSystem::Everything);
+ }
+ }
+private:
+ QPointer<QmlBuildSystem> m_bs;
};
class QMLPROJECTMANAGER_EXPORT QmlProject : public ProjectExplorer::Project