diff options
author | Sami Varanka <sami.varanka@qt.io> | 2021-05-12 13:03:07 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-05-18 10:18:16 +0000 |
commit | 9802dbcf01236da02f79f270535093fb53fabb5a (patch) | |
tree | 4f4d14c69b8905b5f52069565e4046a3acce6272 /src | |
parent | b315cb478add70e746b5f625c94702d12b64d77c (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.
Fixes: QTBUG-93506
Change-Id: I13df962b807feb615e3267f580ef57dd62a0b058
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit c9768c1e2440e52976c3456a9a4d302edf49f56a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
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; |