aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmldesigner/qmldesignerprojectmanager.cpp28
-rw-r--r--src/plugins/qmldesigner/qmldesignerprojectmanager.h3
2 files changed, 24 insertions, 7 deletions
diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp
index 366f1ef04e..95ad8eff6a 100644
--- a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp
+++ b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp
@@ -138,7 +138,7 @@ public:
ImageCacheCollector collector{connectionManager,
QSize{300, 300},
QSize{1000, 1000},
- ImageCacheCollectorNullImageHandling::DontCaptureNullImage};
+ ImageCacheCollectorNullImageHandling::CaptureNullImage};
PreviewTimeStampProvider timeStampProvider;
AsynchronousImageFactory factory;
QPointer<::ProjectExplorer::Target> activeTarget;
@@ -167,6 +167,11 @@ QmlDesignerProjectManager::QmlDesignerProjectManager()
QObject::connect(sessionManager,
&::ProjectExplorer::SessionManager::projectRemoved,
[&](auto *project) { projectRemoved(project); });
+
+ QObject::connect(&m_previewTimer,
+ &QTimer::timeout,
+ this,
+ &QmlDesignerProjectManager::generatePreview);
}
QmlDesignerProjectManager::~QmlDesignerProjectManager() = default;
@@ -196,13 +201,8 @@ void QmlDesignerProjectManager::currentEditorChanged(::Core::IEditor *)
if (!m_projectData || !m_projectData->activeTarget)
return;
- ::QmlProjectManager::QmlBuildSystem *qmlBuildSystem = getQmlBuildSystem(
- m_projectData->activeTarget);
+ m_previewTimer.start(10000);
- if (qmlBuildSystem) {
- m_projectData->collector.setTarget(m_projectData->activeTarget);
- m_projectData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8());
- }
}
void QmlDesignerProjectManager::editorsClosed(const QList<::Core::IEditor *> &) {}
@@ -221,6 +221,20 @@ void QmlDesignerProjectManager::aboutToRemoveProject(::ProjectExplorer::Project
void QmlDesignerProjectManager::projectRemoved(::ProjectExplorer::Project *) {}
+void QmlDesignerProjectManager::generatePreview()
+{
+ if (!m_projectData || !m_projectData->activeTarget)
+ return;
+
+ ::QmlProjectManager::QmlBuildSystem *qmlBuildSystem = getQmlBuildSystem(
+ m_projectData->activeTarget);
+
+ if (qmlBuildSystem) {
+ m_projectData->collector.setTarget(m_projectData->activeTarget);
+ m_projectData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8());
+ }
+}
+
QmlDesignerProjectManager::ImageCacheData *QmlDesignerProjectManager::imageCacheData()
{
std::call_once(imageCacheFlag, [this]() {
diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.h b/src/plugins/qmldesigner/qmldesignerprojectmanager.h
index 68cd809be3..7800198812 100644
--- a/src/plugins/qmldesigner/qmldesignerprojectmanager.h
+++ b/src/plugins/qmldesigner/qmldesignerprojectmanager.h
@@ -27,6 +27,7 @@
#include <QList>
#include <QObject>
+#include <QTimer>
#include <memory>
#include <mutex>
@@ -68,6 +69,7 @@ private:
void projectAdded(::ProjectExplorer::Project *project);
void aboutToRemoveProject(::ProjectExplorer::Project *project);
void projectRemoved(::ProjectExplorer::Project *project);
+ void generatePreview();
ImageCacheData *imageCacheData();
private:
@@ -75,5 +77,6 @@ private:
std::unique_ptr<ImageCacheData> m_imageCacheData;
std::unique_ptr<PreviewImageCacheData> m_previewImageCacheData;
std::unique_ptr<QmlDesignerProjectManagerProjectData> m_projectData;
+ QTimer m_previewTimer;
};
} // namespace QmlDesigner