diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-16 14:26:22 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-17 07:48:24 +0200 |
commit | 2c9963be44c00e7299401e248bc94ef191e0af68 (patch) | |
tree | 97f2fdb8b2b5ea3f04ac9d3248e4d430ee1b5a2a /src/datavisualization/engine/scatter3drenderer.cpp | |
parent | 8674307d6bafabfcaedfe175b883313f0e7d88b9 (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.cpp | 18 |
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(); |