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, &params));
             } 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);

Reply via email to