diff options
author | Sami Varanka <sami.varanka@qt.io> | 2021-05-12 13:03:07 +0300 |
---|---|---|
committer | Sami Varanka <sami.varanka@qt.io> | 2021-05-18 12:44:28 +0300 |
commit | c9768c1e2440e52976c3456a9a4d302edf49f56a (patch) | |
tree | a11032d74b493fc94da94a58ead7522fb681db0f /src | |
parent | ddbed903550cbec68688a4bcd4cb2bdddc9a850c (diff) |
Fix Gradients don't show
Added pointer to graph in Abstract3DController.
Controller can use that pointer to check whether
the graph is ready when receiving
a themetypeChanged signal. Added manual test
for gradients.
Pick-to: 6.1
Fixes: QTBUG-93506
Change-Id: I13df962b807feb615e3267f580ef57dd62a0b058
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
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; |