Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-graphs for openSUSE:Factory checked in at 2026-02-03 21:26:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-graphs (Old) and /work/SRC/openSUSE:Factory/.qt6-graphs.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-graphs" Tue Feb 3 21:26:58 2026 rev:19 rq:1330579 version:6.10.2 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-graphs/qt6-graphs.changes 2025-11-25 15:48:33.007605572 +0100 +++ /work/SRC/openSUSE:Factory/.qt6-graphs.new.1995/qt6-graphs.changes 2026-02-03 21:27:20.698167482 +0100 @@ -1,0 +2,6 @@ +Sat Jan 31 08:10:35 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.10.2: + * https://www.qt.io/blog/qt-6.10.2-released + +------------------------------------------------------------------- Old: ---- qtgraphs-everywhere-src-6.10.1.tar.xz New: ---- qtgraphs-everywhere-src-6.10.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-graphs.spec ++++++ --- /var/tmp/diff_new_pack.AFHFJ8/_old 2026-02-03 21:27:21.926219160 +0100 +++ /var/tmp/diff_new_pack.AFHFJ8/_new 2026-02-03 21:27:21.930219328 +0100 @@ -16,7 +16,7 @@ # -%define real_version 6.10.1 +%define real_version 6.10.2 %define short_version 6.10 %define tar_name qtgraphs-everywhere-src %define tar_suffix %{nil} @@ -30,7 +30,7 @@ %global __requires_exclude qt6qmlimport\\((AxisHandlingExample|SurfaceGalleryExample)\\) # Name: qt6-graphs%{?pkg_suffix} -Version: 6.10.1 +Version: 6.10.2 Release: 0 Summary: 3D visualization module License: GPL-3.0-only ++++++ qtgraphs-everywhere-src-6.10.1.tar.xz -> qtgraphs-everywhere-src-6.10.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/.cmake.conf new/qtgraphs-everywhere-src-6.10.2/.cmake.conf --- old/qtgraphs-everywhere-src-6.10.1/.cmake.conf 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/.cmake.conf 2026-01-23 00:34:07.000000000 +0100 @@ -1,4 +1,6 @@ -set(QT_REPO_MODULE_VERSION "6.10.1") +set(QT_REPO_MODULE_VERSION "6.10.2") set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") -set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") -list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_FOREACH=1") +set(QT_EXTRA_INTERNAL_TARGET_DEFINES + "QT_NO_FOREACH=1" + "QT_NO_QASCONST=1" +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/.tag new/qtgraphs-everywhere-src-6.10.2/.tag --- old/qtgraphs-everywhere-src-6.10.1/.tag 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/.tag 2026-01-23 00:34:07.000000000 +0100 @@ -1 +1 @@ -b50b4e3b46940e5aa3cf31babb4ff1c9454ab473 +6cd2b17ad3828029520c5b590060bff91ac43ceb diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/dependencies.yaml new/qtgraphs-everywhere-src-6.10.2/dependencies.yaml --- old/qtgraphs-everywhere-src-6.10.1/dependencies.yaml 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/dependencies.yaml 2026-01-23 00:34:07.000000000 +0100 @@ -1,10 +1,10 @@ dependencies: ../qtbase: - ref: 90b845d15ffb97693dba527385db83510ebd121a + ref: 000d6c62f7880bb8d3054724e8da0b8ae244130e required: true ../qtdeclarative: - ref: 22fb5e739a2ea700448b22d34ade0d5c1927cb48 + ref: 09c70541c76659bcd8c49f05841b0e778c9ffd4c required: true ../qtquick3d: - ref: c145340b680366c9ecb7bedb3f24cfa7f0f16f80 + ref: ecd08b6626c6940c5e94a7245d2c95a33ac5db3e required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/examples/graphs/2d/cockpit/CMakeLists.txt new/qtgraphs-everywhere-src-6.10.2/examples/graphs/2d/cockpit/CMakeLists.txt --- old/qtgraphs-everywhere-src-6.10.1/examples/graphs/2d/cockpit/CMakeLists.txt 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/examples/graphs/2d/cockpit/CMakeLists.txt 2026-01-23 00:34:07.000000000 +0100 @@ -51,6 +51,7 @@ ) qt6_add_shaders(cockpit "cockpit_shaders" + GLSL "300es, 330" PREFIX "" FILES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/CMakeLists.txt new/qtgraphs-everywhere-src-6.10.2/src/CMakeLists.txt --- old/qtgraphs-everywhere-src-6.10.1/src/CMakeLists.txt 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/CMakeLists.txt 2026-01-23 00:34:07.000000000 +0100 @@ -36,7 +36,6 @@ set(qml_axis_resources "graphs3d/qml/resources/AxisLabel.qml" - "graphs3d/qml/resources/GridLine.qml" "graphs3d/qml/resources/ItemLabel.qml" "graphs3d/qml/resources/TitleLabel.qml" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/common/theme/qgraphstheme.cpp new/qtgraphs-everywhere-src-6.10.2/src/common/theme/qgraphstheme.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/common/theme/qgraphstheme.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/common/theme/qgraphstheme.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -16,6 +16,8 @@ QT_BEGIN_NAMESPACE +Q_LOGGING_CATEGORY(lcGraphsCommonTheme, "qt.graphs.common.theme") + /*! * \class QGraphsTheme * \inmodule QtGraphs @@ -1694,7 +1696,7 @@ setMultiHighlightGradient(linearGradient); break; default: - qWarning("Incorrect usage. Type may be GradientQMLStyle::SingleHL or " + qCWarning(lcGraphsCommonTheme, "Incorrect usage. Type may be GradientQMLStyle::SingleHL or " "GradientQMLStyle::MultiHL."); break; } @@ -1786,7 +1788,7 @@ void QGraphsTheme::addColor(QQuickGraphsColor *color) { if (!color) { - qWarning("Color is invalid, use Color"); + qCWarning(lcGraphsCommonTheme, "Color is invalid, use Color"); return; } clearDummyColors(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/common/theme/qgraphstheme_p.h new/qtgraphs-everywhere-src-6.10.2/src/common/theme/qgraphstheme_p.h --- old/qtgraphs-everywhere-src-6.10.1/src/common/theme/qgraphstheme_p.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/common/theme/qgraphstheme_p.h 2026-01-23 00:34:07.000000000 +0100 @@ -16,9 +16,12 @@ #include <QtGraphs/qgraphstheme.h> #include <QtQuick/private/qquickrectangle_p.h> #include <private/qobject_p.h> +#include <QtCore/qloggingcategory.h> QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(lcGraphsCommonTheme) + class QGraphsThemePrivate : public QObjectPrivate { public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/common/utils/commonutils.cpp new/qtgraphs-everywhere-src-6.10.2/src/common/utils/commonutils.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/common/utils/commonutils.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/common/utils/commonutils.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -14,6 +14,8 @@ static qreal s_maxTextureSize = 0.; +Q_LOGGING_CATEGORY(lcGraphsUtils, "qt.graphs.common.utils") + qreal CommonUtils::maxTextureSize() { // Query maximum texture size only once @@ -38,7 +40,7 @@ params.inst = &inst; rhi.reset(QRhi::create(QRhi::Vulkan, ¶ms)); } else { - qWarning("Failed to create Vulkan instance"); + qCWarning(lcGraphsUtils, "Failed to create Vulkan instance"); } } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/common/utils/commonutils_p.h new/qtgraphs-everywhere-src-6.10.2/src/common/utils/commonutils_p.h --- old/qtgraphs-everywhere-src-6.10.1/src/common/utils/commonutils_p.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/common/utils/commonutils_p.h 2026-01-23 00:34:07.000000000 +0100 @@ -15,9 +15,12 @@ #define COMMONUTILS_P_H #include <private/qgraphsglobal_p.h> +#include <QtCore/qloggingcategory.h> QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(lcGraphsCommonUtils) + class CommonUtils { public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs2d/xychart/qxymodelmapper.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs2d/xychart/qxymodelmapper.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs2d/xychart/qxymodelmapper.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs2d/xychart/qxymodelmapper.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -10,6 +10,8 @@ QT_BEGIN_NAMESPACE +Q_LOGGING_CATEGORY(lcModelMapper2D, "qt.graphs2d.modelmapper") + Q_TRACE_PREFIX(qtgraphs, "QT_BEGIN_NAMESPACE" \ "class QXYModelMapper;" \ @@ -816,10 +818,10 @@ int count = m_orientation == Qt::Vertical ? m_model->rowCount() : m_model->columnCount(); if (count > 0) { if (!xIndex.isValid()) { - qWarning("%ls Invalid X coordinate index in model mapper.", + qCWarning(lcModelMapper2D, "%ls Invalid X coordinate index in model mapper.", qUtf16Printable(QString::fromUtf8(__func__))); } else if (!yIndex.isValid()) { - qWarning("%ls Invalid Y coordinate index in model mapper.", + qCWarning(lcModelMapper2D, "%ls Invalid Y coordinate index in model mapper.", qUtf16Printable(QString::fromUtf8(__func__))); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs2d/xychart/qxymodelmapper_p.h new/qtgraphs-everywhere-src-6.10.2/src/graphs2d/xychart/qxymodelmapper_p.h --- old/qtgraphs-everywhere-src-6.10.1/src/graphs2d/xychart/qxymodelmapper_p.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs2d/xychart/qxymodelmapper_p.h 2026-01-23 00:34:07.000000000 +0100 @@ -14,9 +14,12 @@ #include <QtGraphs/QXYModelMapper> #include <private/qobject_p.h> +#include <QtCore/qloggingcategory.h> QT_BEGIN_NAMESPACE +Q_DECLARE_LOGGING_CATEGORY(lcModelMapper2D) + class QXYModelMapperPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QXYModelMapper) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/engine/q3dscene.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/engine/q3dscene.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/engine/q3dscene.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/engine/q3dscene.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include "q3dscene_p.h" +#include "qgraphs3dlogging_p.h" QT_BEGIN_NAMESPACE @@ -234,7 +235,7 @@ Q_D(Q3DScene); if (d->m_primarySubViewport != primarySubViewport) { if (!primarySubViewport.isValid() && !primarySubViewport.isNull()) { - qWarning("Viewport is invalid."); + qCWarning(lcGraphsScene3D, "Viewport is invalid."); return; } @@ -317,7 +318,7 @@ Q_D(Q3DScene); if (d->m_secondarySubViewport != secondarySubViewport) { if (!secondarySubViewport.isValid() && !secondarySubViewport.isNull()) { - qWarning("Viewport is invalid."); + qCWarning(lcGraphsScene3D, "Viewport is invalid."); return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsbars.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsbars.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsbars.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsbars.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -1,6 +1,7 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only +#include "graphs3d/utils/qgraphs3dlogging_p.h" #include "q3dscene.h" #include "qbar3dseries.h" #include "qbar3dseries_p.h" @@ -800,10 +801,8 @@ Q_TRACE_SCOPE(QGraphs3DBarsCreateOffscreenSliceView, requestedIndex, static_cast<int>(sliceType)); - bool isRow = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row) - || sliceType == QtGraphs3D::SliceCaptureType::RowImage); - bool isColumn = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column) - || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); + const bool isRow = (sliceType == QtGraphs3D::SliceCaptureType::RowImage); + const bool isColumn = (sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); QList<QBar3DSeries *> barSeriesList = this->barSeriesList(); for (const auto &barSeries : std::as_const(barSeriesList)) { @@ -976,7 +975,7 @@ return; if (filePath.isEmpty()) { - qWarning("Save path is not defined."); + qCWarning(lcGraphsBars3D, "Save path is not defined."); sliceView->setVisible(false); sliceView->deleteLater(); return; @@ -985,7 +984,7 @@ QSharedPointer<QQuickItemGrabResult> grabbed = sliceView->grabToImage(); connect(grabbed.data(), &QQuickItemGrabResult::ready, this, [grabbed, sliceView, filePath]() { if (!grabbed.data()->saveToFile(filePath)) - qWarning("Saving requested slice view to image failed"); + qCWarning(lcGraphsBars3D, "Saving requested slice view to image failed"); sliceView->setVisible(false); sliceView->deleteLater(); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsitem.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsitem.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsitem.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsitem.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -6117,6 +6117,7 @@ if (m_sliceView->isVisible()) { // Maximize main view m_sliceView->setVisible(false); + m_sliceView->update(); setSlicingActive(false); updateSubViews(); qCDebug(lcEvents3D, "%s exit sliceView", qUtf8Printable(QLatin1String(__FUNCTION__))); @@ -6645,7 +6646,6 @@ createSliceCamera(m_sliceView); - // auto gridDelegate = createRepeaterDelegateComponent(QStringLiteral(":/axis/GridLine")); m_labelDelegate.reset(new QQmlComponent(qmlEngine(this), QStringLiteral(":/axis/AxisLabel"))); m_sliceGridGeometryModel = new QQuick3DModel(scene); @@ -6789,10 +6789,12 @@ float horizontalScale = 0.0f; - bool isRow = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row) - || sliceType == QtGraphs3D::SliceCaptureType::RowImage); - bool isColumn = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column) - || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); + const bool isRow = ((sliceType == QtGraphs3D::SliceCaptureType::NoImage + && selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row)) + || sliceType == QtGraphs3D::SliceCaptureType::RowImage); + const bool isColumn = ((sliceType == QtGraphs3D::SliceCaptureType::NoImage + && selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column)) + || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); if (isRow) { horizontalAxis = axisX(); @@ -6919,10 +6921,12 @@ else sliceVerticalLabelRepeater = m_sliceVerticalLabelRepeater; - bool isRow = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row) - || sliceType == QtGraphs3D::SliceCaptureType::RowImage); - bool isColumn = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column) - || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); + const bool isRow = ((sliceType == QtGraphs3D::SliceCaptureType::NoImage + && selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row)) + || sliceType == QtGraphs3D::SliceCaptureType::RowImage); + const bool isColumn = ((sliceType == QtGraphs3D::SliceCaptureType::NoImage + && selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column)) + || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); if (isRow) { horizontalAxis = axisX(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsscatter.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsscatter.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphsscatter.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphsscatter.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -1,6 +1,7 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only +#include "graphs3d/utils/qgraphs3dlogging_p.h" #include "q3dscene.h" #include "qgraphsinputhandler_p.h" #include "qquickgraphsscatter_p.h" @@ -452,7 +453,7 @@ window()->releaseResources(); if (itemCount != graphModel->dataItems.size()) - qWarning("%ls Item count differs from itemList count", + qCWarning(lcGraphsScatter3D, "%ls Item count differs from itemList count", qUtf16Printable(QString::fromUtf8(__func__))); bool transparentTexture = false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphssurface.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphssurface.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/qquickgraphssurface.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/qquickgraphssurface.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -1,6 +1,7 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only +#include "graphs3d/utils/qgraphs3dlogging_p.h" #include "private/qquick3drepeater_p.h" #include "q3dscene.h" #include "qabstractdataproxy.h" @@ -16,7 +17,6 @@ #include "utils_p.h" #include <QtQuick3D/private/qquick3dcustommaterial_p.h> -#include <QtQuick3D/private/qquick3ddefaultmaterial_p.h> #include <QtQuick3D/private/qquick3dprincipledmaterial_p.h> #include <QtQuick/qquickitemgrabresult.h> @@ -2856,10 +2856,8 @@ Q_TRACE_SCOPE(QGraphs3DSurfaceCreateOffscreenSliceView, index, requestedIndex, static_cast<int>(sliceType)); - bool isRow = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row) - || sliceType == QtGraphs3D::SliceCaptureType::RowImage); - bool isColumn = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column) - || sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); + const bool isRow = (sliceType == QtGraphs3D::SliceCaptureType::RowImage); + const bool isColumn = (sliceType == QtGraphs3D::SliceCaptureType::ColumnImage); int modelIndex = 0; for (const auto &model : std::as_const(m_model)) { @@ -2883,7 +2881,7 @@ const bool ascendingZ = array.at(0).at(0).z() < array.at(maxRow).at(0).z(); if (requestedIndex < 0 || requestedIndex >= maxRow || requestedIndex >= maxColumn) { - qWarning("The index is out of range. The render stops."); + qCWarning(lcGraphsSurface3D, "The index is out of range. The render stops."); sliceView->setVisible(false); sliceView->deleteLater(); return nullptr; @@ -2926,10 +2924,6 @@ } selectedSeries.append(list); indexCount = rowCount - 1; - - QQmlListReference materialRef(model->sliceModel, "materials"); - auto material = materialRef.at(0); - material->setProperty("isColumn", true); } QVector<quint32> indices; @@ -2969,6 +2963,7 @@ QQmlListReference materialRef(surfaceModel, "materials"); auto material = createQmlCustomMaterial(QStringLiteral(":/materials/SurfaceSliceMaterial")); material->setCullMode(QQuick3DMaterial::NoCulling); + material->setProperty("isColumn", isColumn); QVariant textureInputAsVariant = material->property("custex"); QQuick3DShaderUtilsTextureInput *textureInput = textureInputAsVariant.value<QQuick3DShaderUtilsTextureInput *>(); @@ -3053,7 +3048,7 @@ return; if (filePath.isEmpty()) { - qWarning("Save path is not defined."); + qCWarning(lcGraphsSurface3D, "Save path is not defined."); sliceView->setVisible(false); sliceView->deleteLater(); return; @@ -3062,7 +3057,7 @@ QSharedPointer<QQuickItemGrabResult> grabbed = sliceView->grabToImage(); connect(grabbed.data(), &QQuickItemGrabResult::ready, this, [grabbed, sliceView, filePath]() { if (!grabbed.data()->saveToFile(filePath)) - qWarning("Saving requested slice view to image failed"); + qCWarning(lcGraphsSurface3D, "Saving requested slice view to image failed"); sliceView->setVisible(false); sliceView->deleteLater(); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/resources/GridLine.qml new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/resources/GridLine.qml --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/qml/resources/GridLine.qml 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/qml/resources/GridLine.qml 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -// Copyright (C) 2023 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only - -import QtQuick -import QtQuick3D - -Component { - Node { - property color lineColor: "green" - property bool isPolar: false - property real polarRadius: 0.0 - property real lineWidth: 1 - - Model { - visible: !isPolar - source: "#Cylinder" - depthBias: 1 - eulerRotation: Qt.vector3d(0., 0., 90.) - castsShadows: false - scale: Qt.vector3d(1., 1., 1.5) - materials: [ DefaultMaterial { - diffuseColor: lineColor - specularAmount: 0.0 - } - ] - } - - Rectangle { - x : -(polarRadius * .5) - y : -(polarRadius * .5) - width: polarRadius - height: polarRadius - radius: width / 2.0 - border.color: lineColor - border.width: lineWidth - color: 'transparent' - visible: isPolar - antialiasing: false - } - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/utils/qgraphs3dlogging.cpp new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/utils/qgraphs3dlogging.cpp --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/utils/qgraphs3dlogging.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/utils/qgraphs3dlogging.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -14,6 +14,10 @@ Q_LOGGING_CATEGORY(lcCritical3D, "qt.graphs3d.critical") Q_LOGGING_CATEGORY(lcAxis3D, "qt.graphs3d.axis.general") Q_LOGGING_CATEGORY(lcAProperties3D, "qt.graphs3d.axis.properties") +Q_LOGGING_CATEGORY(lcGraphsScene3D, "qt.graphs3d.scene") +Q_LOGGING_CATEGORY(lcGraphsBars3D, "qt.graphs3d.bars") +Q_LOGGING_CATEGORY(lcGraphsScatter3D, "qt.graphs3d.scatter") +Q_LOGGING_CATEGORY(lcGraphsSurface3D, "qt.graphs3d.surface") QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/utils/qgraphs3dlogging_p.h new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/utils/qgraphs3dlogging_p.h --- old/qtgraphs-everywhere-src-6.10.1/src/graphs3d/utils/qgraphs3dlogging_p.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/src/graphs3d/utils/qgraphs3dlogging_p.h 2026-01-23 00:34:07.000000000 +0100 @@ -26,6 +26,10 @@ Q_DECLARE_LOGGING_CATEGORY(lcCritical3D) Q_DECLARE_LOGGING_CATEGORY(lcAxis3D) Q_DECLARE_LOGGING_CATEGORY(lcAProperties3D) +Q_DECLARE_LOGGING_CATEGORY(lcGraphsScene3D) +Q_DECLARE_LOGGING_CATEGORY(lcGraphsBars3D) +Q_DECLARE_LOGGING_CATEGORY(lcGraphsScatter3D) +Q_DECLARE_LOGGING_CATEGORY(lcGraphsSurface3D) QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/CMakeLists.txt new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/CMakeLists.txt --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/CMakeLists.txt 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/CMakeLists.txt 2026-01-23 00:34:07.000000000 +0100 @@ -5,6 +5,8 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) +# To see both QtCharts and QtGraphs benchmarks in one graph, first build and run this with +# set(USE_CHARTS true) and the again with set(USE_CHARTS false) set(USE_CHARTS false) if (USE_CHARTS) @@ -61,9 +63,11 @@ "ChartsAreaTest.qml" "ChartsBarTest.qml" "ChartsOpenGLLineTest.qml" + "ChartsSplineTest.qml" "GraphsLineTest.qml" "GraphsAreaTest.qml" "GraphsBarTest.qml" + "GraphsSplineTest.qml" ) qt_internal_add_resource(tst_qmlbenchmark2d "qmlbenchmark2d" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/ChartsSplineTest.qml new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/ChartsSplineTest.qml --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/ChartsSplineTest.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/ChartsSplineTest.qml 2026-01-23 00:34:07.000000000 +0100 @@ -0,0 +1,52 @@ +// Copyright (C) 2025 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +import QtQuick +import QtCharts + +Rectangle { + signal measure(int count) + width: 800 + height: 600 + color: "#404040" + + ChartView { + anchors.fill: parent + antialiasing: true + + Component.onCompleted: { + chartsDataSource.reset(1000); + } + + SplineSeries { + id: series + + axisX: ValueAxis { + id: xAxis + min: 0 + max: series.count + } + + axisY: ValueAxis { + min: 0 + max: 10 + } + } + } + + FrameAnimation { + running: true + onTriggered: { + if (xAxis.max !== series.count) + xAxis.max = series.count + chartsDataSource.update(series); + } + } + + Timer { + interval: 400; running: true; repeat: true + onTriggered: { + parent.measure(series.count) + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/GraphsSplineTest.qml new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/GraphsSplineTest.qml --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/GraphsSplineTest.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/GraphsSplineTest.qml 2026-01-23 00:34:07.000000000 +0100 @@ -0,0 +1,55 @@ +// Copyright (C) 2025 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +import QtQuick +import QtGraphs + +Rectangle { + signal measure(int count) + width: 800 + height: 600 + color: "#404040" + + GraphsView { + id: graph + anchors.fill: parent + antialiasing: true + + Component.onCompleted: { + dataSource.reset(1000); + } + + axisX: ValueAxis { + min: 0 + max: { + if (series.count > 0) + return series.count + else + return 1000 + } + } + + axisY: ValueAxis { + min: 0 + max: 10 + } + + SplineSeries { + id: series + } + } + + FrameAnimation { + running: true + onTriggered: { + dataSource.update(series); + } + } + + Timer { + interval: 400; running: true; repeat: true + onTriggered: { + parent.measure(series.count) + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/Main.qml new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/Main.qml --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/Main.qml 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/Main.qml 2026-01-23 00:34:07.000000000 +0100 @@ -8,8 +8,8 @@ id: base width: 800 height: 600 - property list<string> graphsTests: ["GraphsLineTest.qml", "GraphsAreaTest.qml", "GraphsBarTest.qml"] - property list<string> chartsTests: ["ChartsLineTest.qml", "ChartsAreaTest.qml", "ChartsBarTest.qml", "ChartsOpenGLLineTest.qml"] + property list<string> graphsTests: ["GraphsLineTest.qml", "GraphsAreaTest.qml", "GraphsBarTest.qml", "GraphsSplineTest.qml"] + property list<string> chartsTests: ["ChartsLineTest.qml", "ChartsAreaTest.qml", "ChartsBarTest.qml", "ChartsOpenGLLineTest.qml", "ChartsSplineTest.qml"] property list<string> tests: [] property int testIndex: 0 property int fps: 0 @@ -71,6 +71,14 @@ loader.source = "Results.qml" } } + + Button { + text: "Show Spline Results" + onClicked: { + base.resultType = "Spline" + loader.source = "Results.qml" + } + } } Loader { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/Results.qml new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/Results.qml --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmlbenchmark2d/Results.qml 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmlbenchmark2d/Results.qml 2026-01-23 00:34:07.000000000 +0100 @@ -29,7 +29,8 @@ theme: GraphsTheme { id: myTheme colorScheme: GraphsTheme.ColorScheme.Dark - seriesColors: ["#ffaaaa", "#aaffaa", "#aaaaff", "#ff0000", "#ffffaa", "#aaffff", "#ffaaff"] + // seriesColors: ["#ffaaaa", "#aaffaa", "#aaaaff", "#ff0000", "#ffffaa", "#aaffff", "#ffaaff"] + seriesColors: ["#ff0000", "#00ff00", "#0000ff", "#ffffff", "#550000", "#ffff00", "#00ffff", "#ff00ff", "#555500"] } axisX: BarCategoryAxis { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmltestbed/qml/qmltestbed/LineSelection.qml new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmltestbed/qml/qmltestbed/LineSelection.qml --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/qmltestbed/qml/qmltestbed/LineSelection.qml 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/qmltestbed/qml/qmltestbed/LineSelection.qml 2026-01-23 00:34:07.000000000 +0100 @@ -9,8 +9,11 @@ anchors.fill: parent color: "#404040" + property var queriedPoint + property bool selecting: true + GraphsView { - id: chartView + id: graphView anchors.fill: parent anchors.margins: 20 * px anchors.topMargin: 80 * px @@ -63,8 +66,8 @@ y: 20 x: 80 color: "#ffffff" - font.pixelSize: 20 - text: "Selected points: " + lineSeries.selectedPoints + text: selecting ? "Selected points: " + lineSeries.selectedPoints + : "Queried position: " + queriedPoint } SettingsView { @@ -106,5 +109,19 @@ text: "Toggle points 1 and 2" onClicked: lineSeries.toggleSelection([1, 2]); } + Button { + width: 250 + text: "Toggle data point query and selection" + onClicked: selecting = !selecting + } + } + + MouseArea { + enabled: !selecting + anchors.fill: graphView + onClicked: { + queriedPoint = lineSeries.dataPointCoordinatesAt(mouse.x - graphView.plotArea.x, + mouse.y - graphView.plotArea.y) + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraph.cpp new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraph.cpp --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraph.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraph.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -10,6 +10,7 @@ #include <QtGui/qvalidator.h> #include <QtQuick/qquickitemgrabresult.h> #include <QtWidgets/qboxlayout.h> +#include <QtWidgets/qcheckbox.h> #include <QtWidgets/qlabel.h> #include <QtWidgets/qlineedit.h> #include <QtWidgets/qpushbutton.h> @@ -20,14 +21,12 @@ BarGraph::BarGraph(QWidget *parent) { m_barWidget = new QWidget(parent); - m_timer = new QTimer(); initialize(); } BarGraph::~BarGraph() { delete m_barWidget; - delete m_timer; } void BarGraph::initialize() @@ -48,6 +47,14 @@ hLayout->addLayout(vLayout); vLayout->setAlignment(Qt::AlignCenter); + m_pickCheckBox = new QCheckBox(m_barWidget); + m_pickCheckBox->setChecked(false); + m_pickCheckBox->setText(u"Use for Picking"_s); + + m_invertCheckBox = new QCheckBox(m_barWidget); + m_invertCheckBox->setChecked(false); + m_invertCheckBox->setText(u"Invert Picking (Row <-> Column)"_s); + m_rowRadioButton = new QRadioButton(m_barWidget); m_rowRadioButton->setText(u"Row"_s); m_rowRadioButton->setChecked(true); @@ -66,6 +73,8 @@ m_sliceResultLabel = new QLabel(m_barWidget); + vLayout->addWidget(m_pickCheckBox); + vLayout->addWidget(m_invertCheckBox); vLayout->addWidget(m_rowRadioButton); vLayout->addWidget(columnRadioButton); vLayout->addWidget(m_lineSelectText); @@ -76,10 +85,14 @@ m_modifier = new BarGraphModifier(m_barGraphWidget->barGraph(), this); - QObject::connect(sliceToImageButton, - &QPushButton::clicked, + QObject::connect(sliceToImageButton, &QPushButton::clicked, this, &BarGraph::renderSliceToImage); + + QObject::connect(m_rowRadioButton, &QRadioButton::clicked, this, &BarGraph::changeSelectionMode); + QObject::connect(columnRadioButton, + &QRadioButton::clicked, this, - &BarGraph::renderSliceToImage); + &BarGraph::changeSelectionMode); + QObject::connect(m_pickCheckBox, &QCheckBox::clicked, this, &BarGraph::changeSelectionMode); } void BarGraph::renderSliceToImage() @@ -93,6 +106,15 @@ m_sliceResultLabel->setPixmap(QPixmap::fromImage(image)); }); m_modifier->renderSliceToImage(sliceType, index); +} - m_timer->start(); +void BarGraph::changeSelectionMode(bool checked) +{ + Q_UNUSED(checked) + bool mode = m_invertCheckBox->isChecked() ? !m_rowRadioButton->isChecked() + : m_rowRadioButton->isChecked(); + if (m_pickCheckBox->isChecked()) + m_modifier->changeSelectionMode(mode, false); + else + m_modifier->changeSelectionMode(false); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraph.h new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraph.h --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraph.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraph.h 2026-01-23 00:34:07.000000000 +0100 @@ -5,13 +5,13 @@ #define BARGRAPH_H #include <QtCore/qobject.h> -#include <QtCore/qtimer.h> #include <QtQuick/qquickitemgrabresult.h> class BarGraphModifier; class BarGraphWidget; -class QLineEdit; +class QCheckBox; class QLabel; +class QLineEdit; class QRadioButton; class BarGraph : public QObject @@ -26,12 +26,14 @@ private: void renderSliceToImage(); + void changeSelectionMode(bool checked); BarGraphModifier *m_modifier = nullptr; BarGraphWidget *m_barGraphWidget = nullptr; QWidget *m_barWidget = nullptr; - QTimer *m_timer = nullptr; + QCheckBox *m_pickCheckBox = nullptr; + QCheckBox *m_invertCheckBox = nullptr; QRadioButton *m_rowRadioButton = nullptr; QLineEdit *m_lineSelectText = nullptr; QLabel *m_sliceResultLabel = nullptr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraphmodifier.cpp new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraphmodifier.cpp --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraphmodifier.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraphmodifier.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -32,7 +32,7 @@ m_graph->activeTheme()->setPlotAreaBackgroundVisible(false); m_graph->activeTheme()->setLabelFont(QFont("Times New Roman", m_fontSize)); m_graph->activeTheme()->setLabelBackgroundVisible(true); - m_graph->setSelectionMode(QtGraphs3D::SelectionFlag::Column | QtGraphs3D::SelectionFlag::Slice); + m_graph->setSelectionMode(QtGraphs3D::SelectionFlag::None); m_months = {"January", "February", @@ -145,8 +145,17 @@ preset = int(QtGraphs3D::CameraPreset::FrontLow); } -void BarGraphModifier::renderSliceToImage(QtGraphs3D::SliceCaptureType sliceType, - int requestedIndex) +void BarGraphModifier::renderSliceToImage(QtGraphs3D::SliceCaptureType sliceType, int requestedIndex) { m_graph->renderSliceToImage(requestedIndex, sliceType); } + +void BarGraphModifier::changeSelectionMode(bool checked, bool nopick) +{ + auto mode = nopick + ? QtGraphs3D::SelectionFlag::None + : (checked ? (QtGraphs3D::SelectionFlag::Row | QtGraphs3D::SelectionFlag::Slice) + : (QtGraphs3D::SelectionFlag::Column + | QtGraphs3D::SelectionFlag::Slice)); + m_graph->setSelectionMode(mode); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraphmodifier.h new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraphmodifier.h --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/bargraphmodifier.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/bargraphmodifier.h 2026-01-23 00:34:07.000000000 +0100 @@ -22,6 +22,7 @@ void changePresetCamera(); void renderSliceToImage(QtGraphs3D::SliceCaptureType sliceType, int requestedIndex); + void changeSelectionMode(bool checked, bool nopick = true); Q_SIGNALS: void sliceImageChanged(const QImage &image); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraph.cpp new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraph.cpp --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraph.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraph.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -8,6 +8,7 @@ #include <QtCore/qregularexpression.h> #include <QtGui/qvalidator.h> #include <QtWidgets/qboxlayout.h> +#include <QtWidgets/qcheckbox.h> #include <QtWidgets/qlabel.h> #include <QtWidgets/qlineedit.h> #include <QtWidgets/qpushbutton.h> @@ -44,6 +45,14 @@ hLayout->addLayout(vLayout); vLayout->setAlignment(Qt::AlignCenter); + m_pickCheckBox = new QCheckBox(m_surfaceWidget); + m_pickCheckBox->setChecked(false); + m_pickCheckBox->setText(u"Use for Picking"_s); + + m_invertCheckBox = new QCheckBox(m_surfaceWidget); + m_invertCheckBox->setChecked(false); + m_invertCheckBox->setText(u"Invert Picking (Row <-> Column)"_s); + m_rowRadioButton = new QRadioButton(m_surfaceWidget); m_rowRadioButton->setText(u"Row"_s); m_rowRadioButton->setChecked(true); @@ -62,6 +71,8 @@ m_sliceResultLabel = new QLabel(m_surfaceWidget); + vLayout->addWidget(m_pickCheckBox); + vLayout->addWidget(m_invertCheckBox); vLayout->addWidget(m_rowRadioButton); vLayout->addWidget(columnRadioButton); vLayout->addWidget(m_lineSelectText); @@ -80,6 +91,15 @@ &SurfaceGraphModifier::updateSliceImage, this, &SurfaceGraph::applySliceImage); + QObject::connect(m_rowRadioButton, + &QRadioButton::clicked, + this, + &SurfaceGraph::changeSelectionMode); + QObject::connect(columnRadioButton, + &QRadioButton::clicked, + this, + &SurfaceGraph::changeSelectionMode); + QObject::connect(m_pickCheckBox, &QCheckBox::clicked, this, &SurfaceGraph::changeSelectionMode); } void SurfaceGraph::renderSliceToImage() @@ -96,3 +116,14 @@ { m_sliceResultLabel->setPixmap(QPixmap::fromImage(image)); } + +void SurfaceGraph::changeSelectionMode(bool checked) +{ + Q_UNUSED(checked) + bool mode = m_invertCheckBox->isChecked() ? !m_rowRadioButton->isChecked() + : m_rowRadioButton->isChecked(); + if (m_pickCheckBox->isChecked()) + m_modifier->changeSelectionMode(mode, false); + else + m_modifier->changeSelectionMode(false); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraph.h new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraph.h --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraph.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraph.h 2026-01-23 00:34:07.000000000 +0100 @@ -7,8 +7,9 @@ #include <QtCore/qobject.h> #include <QtQuick/qquickitemgrabresult.h> -class QLineEdit; +class QCheckBox; class QLabel; +class QLineEdit; class QRadioButton; class SurfaceGraphModifier; class SurfaceGraphWidget; @@ -26,11 +27,14 @@ private: void renderSliceToImage(); void applySliceImage(QImage image); + void changeSelectionMode(bool checked); SurfaceGraphModifier *m_modifier = nullptr; SurfaceGraphWidget *m_surfaceGraphWidget = nullptr; QWidget *m_surfaceWidget = nullptr; + QCheckBox *m_pickCheckBox = nullptr; + QCheckBox *m_invertCheckBox = nullptr; QRadioButton *m_rowRadioButton = nullptr; QLineEdit *m_lineSelectText = nullptr; QLabel *m_sliceResultLabel = nullptr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraphmodifier.cpp new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraphmodifier.cpp --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraphmodifier.cpp 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraphmodifier.cpp 2026-01-23 00:34:07.000000000 +0100 @@ -7,12 +7,13 @@ #include <QtGraphs/qgraphstheme.h> #include <QtGraphs/qsurface3dseries.h> #include <QtGraphs/qsurfacedataproxy.h> -#include <QtGraphsWidgets/q3dsurfacewidgetitem.h> #include <QtGraphs/qvalue3daxis.h> +#include <QtGraphsWidgets/q3dsurfacewidgetitem.h> #include <QtGui/qimage.h> SurfaceGraphModifier::SurfaceGraphModifier(Q3DSurfaceWidgetItem *surface, QObject *parent) - : QObject(parent), m_graph(surface) + : QObject(parent) + , m_graph(surface) { m_graph->setCameraZoomLevel(85.f); m_graph->setCameraPreset(QtGraphs3D::CameraPreset::IsometricRight); @@ -35,7 +36,7 @@ m_graph->axisZ()->setLabelFormat("%.2f"); m_graph->axisX()->setRange(-8.f, 8.f); m_graph->axisY()->setRange(0.f, 2.f); - m_graph->axisZ()->setRange(-8.f, 8.f); + m_graph->axisZ()->setRange(-4.f, 4.f); m_graph->axisX()->setLabelAutoAngle(30.f); m_graph->axisY()->setLabelAutoAngle(90.f); m_graph->axisZ()->setLabelAutoAngle(30.f); @@ -44,7 +45,7 @@ m_graph->setDefaultInputHandler(); m_graph->setZoomEnabled(true); - m_graph->setSelectionMode(QtGraphs3D::SelectionFlag::Row | QtGraphs3D::SelectionFlag::Slice); + m_graph->setSelectionMode(QtGraphs3D::SelectionFlag::None); connect(m_graph, &Q3DSurfaceWidgetItem::sliceImageChanged, @@ -52,28 +53,38 @@ &SurfaceGraphModifier::updateSliceImage); } +SurfaceGraphModifier::~SurfaceGraphModifier() {} + void SurfaceGraphModifier::renderSliceToImage(QtGraphs3D::SliceCaptureType sliceType, - int requestedIndex) + int requestedIndex) { m_graph->renderSliceToImage(-1, requestedIndex, sliceType); } -SurfaceGraphModifier::~SurfaceGraphModifier() {} +void SurfaceGraphModifier::changeSelectionMode(bool checked, bool nopick) +{ + auto mode = nopick + ? QtGraphs3D::SelectionFlag::None + : (checked ? (QtGraphs3D::SelectionFlag::Row | QtGraphs3D::SelectionFlag::Slice) + : (QtGraphs3D::SelectionFlag::Column + | QtGraphs3D::SelectionFlag::Slice)); + m_graph->setSelectionMode(mode); +} void SurfaceGraphModifier::fillSqrtSinProxy() { float stepX = (8.f - -8.f) / float(150 - 1); - float stepZ = (8.f - -8.f) / float(150 - 1); + float stepZ = (4.f - -4.f) / float(150 - 1); QSurfaceDataArray dataArray; dataArray.reserve(150); for (int i = 0; i < 150; ++i) { QSurfaceDataRow newRow; newRow.reserve(150); - float z = qMin(8.f, (i * stepZ + -8.f)); + float z = qMin(4.f, (i * stepZ + -4.f)); for (int j = 0; j < 150; ++j) { float x = qMin(8.f, (j * stepX + -8.f)); - float R = qSqrt(z * z + x * x) + 0.01f; + float R = qSqrt(0.25 * z * z + x * x) + 0.01f; float y = (qSin(R) / R + 0.24f) * 1.61f; newRow.append(QSurfaceDataItem(x, y, z)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraphmodifier.h new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraphmodifier.h --- old/qtgraphs-everywhere-src-6.10.1/tests/manual/renderslicetoimage/surfacegraphmodifier.h 2025-11-13 23:23:54.000000000 +0100 +++ new/qtgraphs-everywhere-src-6.10.2/tests/manual/renderslicetoimage/surfacegraphmodifier.h 2026-01-23 00:34:07.000000000 +0100 @@ -20,6 +20,7 @@ ~SurfaceGraphModifier(); void renderSliceToImage(QtGraphs3D::SliceCaptureType sliceType, int requestedIndex); + void changeSelectionMode(bool checked, bool nopick = true); Q_SIGNALS: void updateSliceImage(const QImage &image);
