summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-10-24 05:37:46 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-10-24 07:50:31 +0300
commit597f70bd734eb87df9219dd7a579f71c6b8bb5b0 (patch)
tree1f8d3e0d7e491e369e63065aebfaaa109ef41183
parentc15949d86a6bfbefd12a10b67ed840eaaaf2c52c (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.cpp10
-rw-r--r--src/datavisualization/engine/bars3drenderer_p.h2
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;