diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-10-24 05:37:46 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-10-24 07:50:31 +0300 |
commit | 597f70bd734eb87df9219dd7a579f71c6b8bb5b0 (patch) | |
tree | 1f8d3e0d7e491e369e63065aebfaaa109ef41183 | |
parent | c15949d86a6bfbefd12a10b67ed840eaaaf2c52c (diff) |
0,0 slice problem fixed
Task-number: QTRD-2218
Change-Id: Ifa0acab4a9755d9cd2a066541c2d7a3715f9152c
Change-Id: Ifa0acab4a9755d9cd2a066541c2d7a3715f9152c
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 10 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer_p.h | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index d8db0c60..d4cb23d6 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -180,11 +180,12 @@ void Bars3DRenderer::updateDataModel(QBarDataProxy *dataProxy) // Update cached data window int dataRowCount = dataProxy->rowCount(); int dataRowIndex = minRow; + int updateSize = 0; for (int i = 0; i < newRows; i++) { int j = 0; if (dataRowIndex < dataRowCount) { const QBarDataRow *dataRow = dataProxy->rowAt(dataRowIndex); - int updateSize = qMin((dataRow->size() - minCol), m_renderItemArray[i].size()); + updateSize = qMin((dataRow->size() - minCol), m_renderItemArray[i].size()); if (dataRow) { int dataColIndex = minCol; for (; j < updateSize ; j++) { @@ -202,6 +203,9 @@ void Bars3DRenderer::updateDataModel(QBarDataProxy *dataProxy) dataRowIndex++; } + m_renderColumns = updateSize; + m_renderRows = qMin((dataRowCount - minRow), m_renderItemArray.size()); + Abstract3DRenderer::updateDataModel(dataProxy); } @@ -874,7 +878,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) if (QDataVis::SelectionModeSliceRow == m_cachedSelectionMode) { item.setTranslation(modelMatrix.column(3).toVector3D()); item.setPosition(QPoint(row, bar)); - if (selectionDirty) + if (selectionDirty && bar < m_renderColumns) m_sliceSelection->append(&item); } break; @@ -887,7 +891,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) if (QDataVis::SelectionModeSliceColumn == m_cachedSelectionMode) { item.setTranslation(modelMatrix.column(3).toVector3D()); item.setPosition(QPoint(row, bar)); - if (selectionDirty) + if (selectionDirty && row < m_renderRows) m_sliceSelection->append(&item); } break; diff --git a/src/datavisualization/engine/bars3drenderer_p.h b/src/datavisualization/engine/bars3drenderer_p.h index 764942cc..dd80902a 100644 --- a/src/datavisualization/engine/bars3drenderer_p.h +++ b/src/datavisualization/engine/bars3drenderer_p.h @@ -100,6 +100,8 @@ private: GLfloat m_maxSceneSize; QVector3D m_selection; QVector3D m_previousSelection; + int m_renderRows; + int m_renderColumns; bool m_hasHeightAdjustmentChanged; BarRenderItem m_dummyBarRenderItem; |