diff options
-rw-r--r-- | tools/q3dsviewer/q3dsmainwindow.cpp | 13 | ||||
-rw-r--r-- | tools/q3dsviewer/q3dsmainwindow.h | 4 |
2 files changed, 16 insertions, 1 deletions
diff --git a/tools/q3dsviewer/q3dsmainwindow.cpp b/tools/q3dsviewer/q3dsmainwindow.cpp index 837c63c..1182d8e 100644 --- a/tools/q3dsviewer/q3dsmainwindow.cpp +++ b/tools/q3dsviewer/q3dsmainwindow.cpp @@ -58,6 +58,13 @@ Q3DStudioMainWindow::Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentM styleFile.open(QFile::ReadOnly); qApp->setStyleSheet(styleFile.readAll()); + // This timer makes sure that reloads are not called more often than once per second + m_refreshTimer.setInterval(1000); + m_refreshTimer.setSingleShot(true); + connect(&m_refreshTimer, &QTimer::timeout, [this] { + m_okToReload = true; + }); + static const bool enableDebugMenu = qEnvironmentVariableIntValue("Q3DS_DEBUG") >= 1; QWidget *wrapper = QWidget::createWindowContainer(view); @@ -98,7 +105,11 @@ Q3DStudioMainWindow::Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentM remote->state() != Q3DSRemoteDeploymentManager::LocalProject && remote->state() != Q3DSRemoteDeploymentManager::RemoteProject) return; - view->engine()->setSource(view->engine()->source()); + if (m_okToReload) { + view->engine()->setSource(view->engine()->source()); + m_refreshTimer.start(); + m_okToReload = false; + } }); fileMenu->addAction(reloadAction); addAction(reloadAction); diff --git a/tools/q3dsviewer/q3dsmainwindow.h b/tools/q3dsviewer/q3dsmainwindow.h index 1d29f88..c38118c 100644 --- a/tools/q3dsviewer/q3dsmainwindow.h +++ b/tools/q3dsviewer/q3dsmainwindow.h @@ -31,6 +31,7 @@ #define Q3DSTUDIOMAINWINDOW_H #include <QMainWindow> +#include <QTimer> QT_BEGIN_NAMESPACE @@ -44,6 +45,9 @@ public: explicit Q3DStudioMainWindow(Q3DSWindow *view, Q3DSRemoteDeploymentManager *remote = nullptr, QWidget *parent = nullptr); static QString fileFilter(); +private: + QTimer m_refreshTimer; + bool m_okToReload = true; }; QT_END_NAMESPACE |