diff options
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerprojectmanager.cpp | 28 | ||||
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerprojectmanager.h | 3 |
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 |