diff options
Diffstat (limited to 'src')
5 files changed, 13 insertions, 2 deletions
diff --git a/src/datavisualization/CMakeLists.txt b/src/datavisualization/CMakeLists.txt index 2496aa69..5c7d5594 100644 --- a/src/datavisualization/CMakeLists.txt +++ b/src/datavisualization/CMakeLists.txt @@ -84,6 +84,7 @@ qt_internal_add_module(DataVisualization input theme utils + ../datavisualizationqml2 PUBLIC_LIBRARIES Qt::Core Qt::Gui diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index 3481f4eb..5ed62ca9 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -27,6 +27,7 @@ ** ****************************************************************************/ +#include "abstractdeclarative_p.h" #include "abstract3dcontroller_p.h" #include "qabstract3daxis_p.h" #include "qvalue3daxis_p.h" @@ -692,12 +693,16 @@ void Abstract3DController::handleThemeTypeChanged(Q3DTheme::Theme theme) { Q_UNUSED(theme); + if (!m_qml) + return; + // Changing theme type is logically equivalent of changing the entire theme // object, so reset all attached series to the new theme. - + bool force = m_qml->isReady(); Q3DTheme *activeTheme = m_themeManager->activeTheme(); for (int i = 0; i < m_seriesList.size(); i++) - m_seriesList.at(i)->d_ptr->resetToTheme(*activeTheme, i, true); + m_seriesList.at(i)->d_ptr->resetToTheme(*activeTheme, i, force); + markSeriesVisualsDirty(); } diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index 5a99ecfc..916b3e1e 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -56,6 +56,7 @@ QT_FORWARD_DECLARE_CLASS(QOpenGLFramebufferObject) QT_BEGIN_NAMESPACE +class AbstractDeclarative; class Abstract3DRenderer; class QAbstract3DSeries; class ThemeManager; @@ -225,6 +226,7 @@ protected: qreal m_margin; QMutex m_renderMutex; + AbstractDeclarative *m_qml = nullptr; explicit Abstract3DController(QRect initialViewport, Q3DScene *scene, QObject *parent = 0); diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp index d0830f70..ccc03d19 100644 --- a/src/datavisualizationqml2/abstractdeclarative.cpp +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -293,6 +293,7 @@ void AbstractDeclarative::setSharedController(Abstract3DController *controller) { Q_ASSERT(controller); m_controller = controller; + m_controller->m_qml = this; if (!m_controller->isOpenGLES()) m_samples = 4; diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h index f0ebf4cf..dd560150 100644 --- a/src/datavisualizationqml2/abstractdeclarative_p.h +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -231,6 +231,8 @@ public: QMutex *mutex() { return &m_mutex; } + bool isReady() { return isComponentComplete(); } + public Q_SLOTS: virtual void handleAxisXChanged(QAbstract3DAxis *axis) = 0; virtual void handleAxisYChanged(QAbstract3DAxis *axis) = 0; |