summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp11
-rw-r--r--src/datavisualization/engine/q3dscene.cpp9
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp5
3 files changed, 23 insertions, 2 deletions
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 3e83a830..da774239 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -456,6 +456,11 @@ void Bars3DRenderer::render(GLuint defaultFboHandle)
void Bars3DRenderer::drawSlicedScene()
{
+ if (!m_cachedSelectionMode.testFlag(QAbstract3DGraph::SelectionSlice)) {
+ qWarning("Selection mode QAbstract3DGraph::SelectionSlice not set. It must be set before calling setSlicingActive(true).");
+ return;
+ }
+
GLfloat barPosX = 0;
QVector3D lightPos;
QVector4D lightColor = Utils::vectorFromColor(m_cachedTheme->lightColor());
@@ -815,6 +820,12 @@ void Bars3DRenderer::drawSlicedScene()
int labelCount = m_sliceCache->labelItems().size();
for (int labelNo = 0; labelNo < labelCount; labelNo++) {
+ // Check for invalid usage (no selection when setting slicing active)
+ if (!firstVisualSliceArray) {
+ qWarning("No slice data found. Make sure there is a valid selection.");
+ continue;
+ }
+
// Get labels from first series only
const BarRenderSliceItem &item = firstVisualSliceArray->at(labelNo);
m_dummyBarRenderItem.setTranslation(QVector3D(item.translation().x(),
diff --git a/src/datavisualization/engine/q3dscene.cpp b/src/datavisualization/engine/q3dscene.cpp
index 3f2deec0..081868ef 100644
--- a/src/datavisualization/engine/q3dscene.cpp
+++ b/src/datavisualization/engine/q3dscene.cpp
@@ -98,7 +98,10 @@ QT_BEGIN_NAMESPACE_DATAVISUALIZATION
/*!
* \qmlproperty bool Scene3D::slicingActive
*
- * This property contains whether 2D slicing view is currently active or not.
+ * This property contains whether 2D slicing view is currently active or not. If setting it, you
+ * must make sure AbstractGraph3D::selectionMode has
+ * \l{QAbstract3DGraph::SelectionSlice}{AbstractGraph3D.SelectionSlice} flag set in conjunction
+ * with either row or column selection mode, and there is a valid selection.
* \note Not all visualizations support the 2D slicing view.
*/
@@ -291,7 +294,9 @@ QPoint Q3DScene::invalidSelectionPoint()
/*!
* \property Q3DScene::slicingActive
*
- * This property contains whether 2D slicing view is currently active or not.
+ * This property contains whether 2D slicing view is currently active or not. If setting it, you
+ * must make sure QAbstract3DGraph::selectionMode has QAbstract3DGraph::SelectionSlice flag set
+ * in conjunction with either row or column selection mode, and there is a valid selection.
* \note Not all visualizations support the 2D slicing view.
*/
bool Q3DScene::isSlicingActive() const
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index fb7322cc..19ae0de4 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -782,6 +782,11 @@ void Surface3DRenderer::render(GLuint defaultFboHandle)
void Surface3DRenderer::drawSlicedScene()
{
+ if (!m_cachedSelectionMode.testFlag(QAbstract3DGraph::SelectionSlice)) {
+ qWarning("Selection mode QAbstract3DGraph::SelectionSlice not set. It must be set before calling setSlicingActive(true).");
+ return;
+ }
+
QVector3D lightPos;
QVector4D lightColor = Utils::vectorFromColor(m_cachedTheme->lightColor());