summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-10-11 10:00:48 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-10-11 11:54:14 +0300
commita483fa13f4d4acebe0bb21fc569a8de23b76b56f (patch)
treea38365aab02a1b68a862589c48094b3aa921db96 /src
parent40720e02e98c298a751d06b1152f1274027c7eb1 (diff)
Fix slice view reset on proxy change
Change-Id: I7497da41e60ab0db405e3b44ff63771222ec14b3 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp3
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp6
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp3
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp4
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp6
5 files changed, 20 insertions, 2 deletions
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index f9cdfd8f..50d8d030 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -125,6 +125,7 @@ void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy)
QObject::connect(barDataProxy, &QBarDataProxy::columnLabelsChanged, this,
&Bars3DController::handleDataColumnLabelsChanged);
+ scene()->setSlicingActive(false);
adjustAxisRanges();
// Always clear selection on proxy change
@@ -132,6 +133,8 @@ void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy)
handleDataRowLabelsChanged();
handleDataColumnLabelsChanged();
+ m_isDataDirty = true;
+ emitNeedRender();
}
void Bars3DController::handleArrayReset()
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 8083a896..74c1a99b 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -235,6 +235,8 @@ void Bars3DRenderer::updateScene(Q3DScene *scene)
void Bars3DRenderer::render(GLuint defaultFboHandle)
{
+ bool slicingChanged = m_cachedIsSlicingActivated != m_cachedScene->isSlicingActive();
+
// Handle GL state setup for FBO buffers and clearing of the render surface
Abstract3DRenderer::render(defaultFboHandle);
@@ -246,7 +248,9 @@ void Bars3DRenderer::render(GLuint defaultFboHandle)
drawScene(defaultFboHandle);
// If slicing has been activated by this render pass, we need another render
- if (m_cachedIsSlicingActivated != m_cachedScene->isSlicingActive())
+ // Also trigger another render always when slicing changes in general to ensure
+ // final draw is correct.
+ if (m_cachedIsSlicingActivated != m_cachedScene->isSlicingActive() || slicingChanged)
emit needRender();
}
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index 94d3fd90..9f43d94e 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -117,6 +117,9 @@ void Scatter3DController::setActiveDataProxy(QAbstractDataProxy *proxy)
adjustValueAxisRange();
setSelectedItemIndex(noSelectionIndex());
+ setSlicingActive(false);
+ m_isDataDirty = true;
+ emitNeedRender();
}
void Scatter3DController::handleArrayReset()
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index a7c84a87..87ea48f0 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -178,11 +178,15 @@ void Surface3DController::setActiveDataProxy(QAbstractDataProxy *proxy)
QObject::connect(surfaceDataProxy, &QSurfaceDataProxy::arrayReset,
this, &Surface3DController::handleArrayReset);
+ scene()->setSlicingActive(false);
adjustValueAxisRange();
+ m_isDataDirty = true;
+ emitNeedRender();
}
void Surface3DController::handleArrayReset()
{
+ scene()->setSlicingActive(false);
adjustValueAxisRange();
m_isDataDirty = true;
emitNeedRender();
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index d2dcf634..8d0d7203 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -439,6 +439,8 @@ void Surface3DRenderer::updateScene(Q3DScene *scene)
void Surface3DRenderer::render(GLuint defaultFboHandle)
{
bool slicingActivated = m_cachedScene->isSlicingActive();
+ bool slicingChanged = m_cachedIsSlicingActivated != slicingActivated;
+
updateSlicingActive(slicingActivated);
// Handle GL state setup for FBO buffers and clearing of the render surface
@@ -458,7 +460,9 @@ void Surface3DRenderer::render(GLuint defaultFboHandle)
m_selectionPointer->render(defaultFboHandle);
// If slicing has been activated by this render pass, we need another render
- if (slicingActivated != m_cachedScene->isSlicingActive())
+ // Also trigger another render always when slicing changes in general to ensure
+ // final draw is correct.
+ if (slicingActivated != m_cachedScene->isSlicingActive() || slicingChanged)
emit needRender();
}