diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | dist/changes-5.15.2 | 28 | ||||
-rw-r--r-- | src/datavisualization/data/qsurfacedataproxy.cpp | 12 | ||||
-rw-r--r-- | src/datavisualization/doc/src/qtdatavisualization.qdoc | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 10 | ||||
-rw-r--r-- | src/datavisualization/engine/qabstract3dgraph.cpp | 5 | ||||
-rw-r--r-- | src/datavisualization/theme/thememanager.cpp | 3 | ||||
-rw-r--r-- | src/datavisualization/utils/scatterobjectbufferhelper.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/utils/scatterpointbufferhelper.cpp | 1 | ||||
-rw-r--r-- | tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp | 4 | ||||
-rw-r--r-- | tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp | 4 | ||||
-rw-r--r-- | tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp | 5 | ||||
-rw-r--r-- | tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp | 3 | ||||
-rw-r--r-- | tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp | 10 |
14 files changed, 70 insertions, 21 deletions
diff --git a/.qmake.conf b/.qmake.conf index 13d3ec1d..8a33647d 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,6 +2,6 @@ load(qt_build_config) DEFINES += QT_NO_JAVA_STYLE_ITERATORS QT_NO_LINKED_LIST -MODULE_VERSION = 5.15.3 +MODULE_VERSION = 5.15.13 CONFIG += warning_clean CMAKE_MODULE_TESTS=- diff --git a/dist/changes-5.15.2 b/dist/changes-5.15.2 new file mode 100644 index 00000000..3f584aec --- /dev/null +++ b/dist/changes-5.15.2 @@ -0,0 +1,28 @@ +Qt 5.15.2 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.15.1. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + + https://doc.qt.io/qt-5.15/index.html + +The Qt version 5.15 series is binary compatible with the 5.14.x series. +Applications compiled for 5.14 will continue to run with 5.15. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + +**************************************************************************** +* Library * +**************************************************************************** + + diff --git a/src/datavisualization/data/qsurfacedataproxy.cpp b/src/datavisualization/data/qsurfacedataproxy.cpp index 1c61084c..d176238a 100644 --- a/src/datavisualization/data/qsurfacedataproxy.cpp +++ b/src/datavisualization/data/qsurfacedataproxy.cpp @@ -475,7 +475,8 @@ void QSurfaceDataProxyPrivate::setItem(int rowIndex, int columnIndex, const QSur int QSurfaceDataProxyPrivate::addRow(QSurfaceDataRow *row) { - Q_ASSERT(m_dataArray->at(0)->size() == row->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == row->size()); int currentSize = m_dataArray->size(); m_dataArray->append(row); return currentSize; @@ -485,7 +486,8 @@ int QSurfaceDataProxyPrivate::addRows(const QSurfaceDataArray &rows) { int currentSize = m_dataArray->size(); for (int i = 0; i < rows.size(); i++) { - Q_ASSERT(m_dataArray->at(0)->size() == rows.at(i)->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == rows.at(i)->size()); m_dataArray->append(rows.at(i)); } return currentSize; @@ -494,7 +496,8 @@ int QSurfaceDataProxyPrivate::addRows(const QSurfaceDataArray &rows) void QSurfaceDataProxyPrivate::insertRow(int rowIndex, QSurfaceDataRow *row) { Q_ASSERT(rowIndex >= 0 && rowIndex <= m_dataArray->size()); - Q_ASSERT(m_dataArray->at(0)->size() == row->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == row->size()); m_dataArray->insert(rowIndex, row); } @@ -503,7 +506,8 @@ void QSurfaceDataProxyPrivate::insertRows(int rowIndex, const QSurfaceDataArray Q_ASSERT(rowIndex >= 0 && rowIndex <= m_dataArray->size()); for (int i = 0; i < rows.size(); i++) { - Q_ASSERT(m_dataArray->at(0)->size() == rows.at(i)->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == rows.at(i)->size()); m_dataArray->insert(rowIndex++, rows.at(i)); } } diff --git a/src/datavisualization/doc/src/qtdatavisualization.qdoc b/src/datavisualization/doc/src/qtdatavisualization.qdoc index 5ee8cd87..ec378b98 100644 --- a/src/datavisualization/doc/src/qtdatavisualization.qdoc +++ b/src/datavisualization/doc/src/qtdatavisualization.qdoc @@ -38,6 +38,8 @@ \module QtDataVisualization \title Qt Data Visualization C++ Classes \ingroup modules + \qtcmakepackage DataVisualization + \qtvariable datavisualization \brief C++ classes for the Qt Data Visualization API. diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index c57339db..c04ef78c 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -2051,10 +2051,14 @@ void Bars3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCamer glEnable(GL_POLYGON_OFFSET_FILL); + // If camera x rotation is 180, side labels face wrong direction + float activeCameraXRotation = (activeCamera->xRotation() >= 180.0f) ? -180.0f + : activeCamera->xRotation(); + float labelAutoAngle = m_axisCacheY.labelAutoRotation(); float labelAngleFraction = labelAutoAngle / 90.0f; float fractionCamY = activeCamera->yRotation() * labelAngleFraction; - float fractionCamX = activeCamera->xRotation() * labelAngleFraction; + float fractionCamX = activeCameraXRotation * labelAngleFraction; float labelsMaxWidth = 0.0f; int startIndex; @@ -2168,7 +2172,7 @@ void Bars3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCamer labelAutoAngle = m_axisCacheZ.labelAutoRotation(); labelAngleFraction = labelAutoAngle / 90.0f; fractionCamY = activeCamera->yRotation() * labelAngleFraction; - fractionCamX = activeCamera->xRotation() * labelAngleFraction; + fractionCamX = activeCameraXRotation * labelAngleFraction; GLfloat labelYAdjustment = 0.005f; GLfloat colPosValue = m_scaleXWithBackground + labelMargin; GLfloat rowPosValue = m_scaleZWithBackground + labelMargin; @@ -2293,7 +2297,7 @@ void Bars3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCamer labelAutoAngle = m_axisCacheX.labelAutoRotation(); labelAngleFraction = labelAutoAngle / 90.0f; fractionCamY = activeCamera->yRotation() * labelAngleFraction; - fractionCamX = activeCamera->xRotation() * labelAngleFraction; + fractionCamX = activeCameraXRotation * labelAngleFraction; alignment = (m_xFlipped != m_zFlipped) ? Qt::AlignLeft : Qt::AlignRight; if (labelAutoAngle == 0.0f) { labelRotation = QVector3D(-90.0f, 90.0f, 0.0f); diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index 284ab408..20460bba 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -656,11 +656,6 @@ qreal QAbstract3DGraph::currentFps() const * * \brief Whether orthographic projection is used for displaying the graph. * - * If \c {true}, ortographic projection is used to create 2D graphs by replacing - * the default input handler with one that does not allow rotating the graph and - * by setting the camera to view the graph - * directly from the side or from the top. Also, axis labels typically need to be rotated when - * viewing the graph from the sides. * Defaults to \c{false}. * \note Shadows will be disabled when set to \c{true}. * diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp index 01c7c10b..fb06b11c 100644 --- a/src/datavisualization/theme/thememanager.cpp +++ b/src/datavisualization/theme/thememanager.cpp @@ -101,7 +101,8 @@ void ThemeManager::setActiveTheme(Q3DTheme *theme) m_activeTheme = theme; // Reset all bits to dirty for sync - m_activeTheme->d_ptr->resetDirtyBits(); + if (theme->d_ptr->isForcePredefinedType()) + m_activeTheme->d_ptr->resetDirtyBits(); // Connect signals from new one connectThemeSignals(); diff --git a/src/datavisualization/utils/scatterobjectbufferhelper.cpp b/src/datavisualization/utils/scatterobjectbufferhelper.cpp index 579eff98..b0858149 100644 --- a/src/datavisualization/utils/scatterobjectbufferhelper.cpp +++ b/src/datavisualization/utils/scatterobjectbufferhelper.cpp @@ -48,7 +48,6 @@ ScatterObjectBufferHelper::~ScatterObjectBufferHelper() void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal dotScale) { - m_meshDataLoaded = false; m_indexCount = 0; ObjectHelper *dotObj = cache->object(); @@ -71,6 +70,7 @@ void ScatterObjectBufferHelper::fullLoad(ScatterSeriesRenderCache *cache, qreal m_uvbuffer = 0; m_normalbuffer = 0; m_elementbuffer = 0; + m_meshDataLoaded = false; } // Index vertices diff --git a/src/datavisualization/utils/scatterpointbufferhelper.cpp b/src/datavisualization/utils/scatterpointbufferhelper.cpp index 860a2b88..9a9eafec 100644 --- a/src/datavisualization/utils/scatterpointbufferhelper.cpp +++ b/src/datavisualization/utils/scatterpointbufferhelper.cpp @@ -97,6 +97,7 @@ void ScatterPointBufferHelper::load(ScatterSeriesRenderCache *cache) m_bufferedPoints.clear(); m_pointbuffer = 0; m_uvbuffer = 0; + m_meshDataLoaded = false; } bool itemsVisible = false; diff --git a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp index dfeee506..18fa0296 100644 --- a/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dbars-modelproxy/tst_proxy.cpp @@ -258,7 +258,9 @@ void tst_proxy::multiMatch() graph.addSeries(series); - QCoreApplication::processEvents(); + QSignalSpy spy(graph.valueAxis(), SIGNAL(maxChanged(float))); + spy.wait(1000); + QCOMPARE(graph.valueAxis()->max(), 6.5f); m_proxy->setMultiMatchBehavior(QItemModelBarDataProxy::MMBFirst); QCoreApplication::processEvents(); diff --git a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp index 8e17f6bb..ecb4e8c2 100644 --- a/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dscatter-modelproxy/tst_proxy.cpp @@ -192,9 +192,9 @@ void tst_proxy::addModel() m_proxy->setZPosRoleReplace(QStringLiteral("\\1")); QScatter3DSeries *series = new QScatter3DSeries(m_proxy); - Q_UNUSED(series) - QCoreApplication::processEvents(); + QSignalSpy spy(series, SIGNAL(dataProxyChanged(QScatterDataProxy *))); + spy.wait(1000); QCOMPARE(m_proxy->itemCount(), 2); QVERIFY(m_proxy->series()); diff --git a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp index e031688c..99b30af9 100644 --- a/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-heightproxy/tst_proxy.cpp @@ -80,15 +80,16 @@ void tst_proxy::construct() QImage image(QSize(10, 10), QImage::Format_ARGB32); image.fill(0); proxy = new QHeightMapSurfaceDataProxy(image); + QSignalSpy spy(proxy, SIGNAL(columnCountChanged(int))); QVERIFY(proxy); - QCoreApplication::processEvents(); + spy.wait(1000); QCOMPARE(proxy->columnCount(), 10); QCOMPARE(proxy->rowCount(), 10); delete proxy; proxy = new QHeightMapSurfaceDataProxy(":/customtexture.jpg"); QVERIFY(proxy); - QCoreApplication::processEvents(); + spy.wait(1000); QCOMPARE(proxy->columnCount(), 24); QCOMPARE(proxy->rowCount(), 24); delete proxy; diff --git a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp index eb984c1a..c1039c85 100644 --- a/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-modelproxy/tst_proxy.cpp @@ -274,8 +274,9 @@ void tst_proxy::multiMatch() QSurface3DSeries *series = new QSurface3DSeries(m_proxy); graph.addSeries(series); + QSignalSpy spy(graph.axisY(), SIGNAL(maxChanged(float))); + spy.wait(1000); - QCoreApplication::processEvents(); QCOMPARE(graph.axisY()->max(), 10.5f); m_proxy->setMultiMatchBehavior(QItemModelSurfaceDataProxy::MMBFirst); QCoreApplication::processEvents(); diff --git a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp index cda6bcce..1516e67d 100644 --- a/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp +++ b/tests/auto/cpptest/q3dsurface-proxy/tst_proxy.cpp @@ -47,6 +47,7 @@ private slots: void initialProperties(); void initializeProperties(); + void initialRow(); private: QSurfaceDataProxy *m_proxy; @@ -105,5 +106,14 @@ void tst_proxy::initializeProperties() QCOMPARE(m_proxy->rowCount(), 2); } +void tst_proxy::initialRow() +{ + QSurfaceDataProxy proxy; + QSurfaceDataRow row{QSurfaceDataItem{QVector3D{0, 0, 0}}, + QSurfaceDataItem{QVector3D{1, 1, 1}}}; + proxy.addRow(new QSurfaceDataRow(row)); + proxy.addRow(new QSurfaceDataRow(row)); +} + QTEST_MAIN(tst_proxy) #include "tst_proxy.moc" |