summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/scatter3drenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-16 14:26:22 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-17 07:48:24 +0200
commit2c9963be44c00e7299401e248bc94ef191e0af68 (patch)
tree97f2fdb8b2b5ea3f04ac9d3248e4d430ee1b5a2a /src/datavisualization/engine/scatter3drenderer.cpp
parent8674307d6bafabfcaedfe175b883313f0e7d88b9 (diff)
Synchronize clicked detection properly
Implements item 2) in QTRD-2645 Task-number: QTRD-2645 Change-Id: I8b4b3a63eeeba3ba34b6865543380022a6d732ed Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index e0348f39..2e6680aa 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -90,7 +90,8 @@ Scatter3DRenderer::Scatter3DRenderer(Scatter3DController *controller)
m_dotSizeScale(1.0f),
m_hasHeightAdjustmentChanged(true),
m_backgroundMargin(defaultMargin),
- m_maxItemSize(0.0f)
+ m_maxItemSize(0.0f),
+ m_clickedIndex(Scatter3DController::invalidSelectionIndex())
{
initializeOpenGLFunctions();
initializeOpenGL();
@@ -235,6 +236,12 @@ void Scatter3DRenderer::updateScene(Q3DScene *scene)
Abstract3DRenderer::updateScene(scene);
}
+void Scatter3DRenderer::resetClickedStatus()
+{
+ m_clickedIndex = Scatter3DController::invalidSelectionIndex();
+ m_clickedSeries = 0;
+}
+
void Scatter3DRenderer::render(GLuint defaultFboHandle)
{
// Handle GL state setup for FBO buffers and clearing of the render surface
@@ -558,10 +565,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
// Read color under cursor
QVector3D clickedColor = Utils::getSelection(m_inputPosition,
m_viewport.height());
- int clickedIndex = 0;
- QScatter3DSeries *clickedSeries = 0;
- selectionColorToSeriesAndIndex(clickedColor, clickedIndex, clickedSeries);
- emit itemClicked(clickedIndex, clickedSeries);
+ selectionColorToSeriesAndIndex(clickedColor, m_clickedIndex, m_clickedSeries);
// Revert to original fbo and viewport
glBindFramebuffer(GL_FRAMEBUFFER, defaultFboHandle);
@@ -1778,7 +1782,7 @@ QVector3D Scatter3DRenderer::indexToSelectionColor(GLint index)
return QVector3D(dotIdxRed, dotIdxGreen, dotIdxBlue);
}
-void Scatter3DRenderer::selectionColorToSeriesAndIndex(const QVector3D &color, int &index, QScatter3DSeries *&series)
+void Scatter3DRenderer::selectionColorToSeriesAndIndex(const QVector3D &color, int &index, QAbstract3DSeries *&series)
{
if (color != selectionSkipColor) {
index = int(color.x())
@@ -1787,7 +1791,7 @@ void Scatter3DRenderer::selectionColorToSeriesAndIndex(const QVector3D &color, i
// Find the series and adjust the index accordingly
for (int i = 0; i < m_renderingArrays.size(); i++) {
if (index < m_renderingArrays.at(i).size()) {
- series = static_cast<QScatter3DSeries *>(m_visibleSeriesList.at(i).series());
+ series = m_visibleSeriesList.at(i).series();
return; // Valid found and already set to return parameters, so we can return
} else {
index -= m_renderingArrays.at(i).size();