diff options
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/bars3dcontroller.cpp | 6 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index 99fa8223..35b24218 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -148,7 +148,6 @@ void Bars3DController::handleRowsChanged(int startIndex, int count) if (!oldChangeCount) m_changedRows.reserve(count); - int selectedRow = m_selectedBar.x(); for (int i = 0; i < count; i++) { bool newItem = true; int candidate = startIndex + i; @@ -162,7 +161,7 @@ void Bars3DController::handleRowsChanged(int startIndex, int count) if (newItem) { ChangeRow newChangeItem = {series, candidate}; m_changedRows.append(newChangeItem); - if (series == m_selectedBarSeries && selectedRow == candidate) + if (series == m_selectedBarSeries && m_selectedBar.x() == candidate) series->d_ptr->markItemLabelDirty(); } } @@ -516,7 +515,8 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri adjustSelectionPosition(pos, series); if (selectionMode().testFlag(QAbstract3DGraph::SelectionSlice)) { - // If the selected bar is outside data window, or there is no visible selected bar, disable slicing + // If the selected bar is outside data window, or there is no visible selected bar, + // disable slicing. if (pos.x() < m_axisZ->min() || pos.x() > m_axisZ->max() || pos.y() < m_axisX->min() || pos.y() > m_axisX->max() || !series->isVisible()) { diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index ab7bb4ca..f93d20b6 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -337,8 +337,14 @@ void Bars3DRenderer::updateRows(const QVector<Bars3DController::ChangeRow> &rows if (!cache->isVisible() && !cache->dataDirty()) cache->setDataDirty(true); } - if (cache->isVisible()) + if (cache->isVisible()) { updateRenderRow(dataArray->at(row), cache->renderArray()[row - minRow]); + if (m_cachedIsSlicingActivated + && cache == m_selectedSeriesCache + && m_selectedBarPos.x() == row) { + m_selectionDirty = true; // Need to update slice view + } + } } } @@ -370,6 +376,11 @@ void Bars3DRenderer::updateItems(const QVector<Bars3DController::ChangeItem> &it if (cache->isVisible()) { updateRenderItem(dataArray->at(row)->at(col), cache->renderArray()[row - minRow][col - minCol]); + if (m_cachedIsSlicingActivated + && cache == m_selectedSeriesCache + && m_selectedBarPos == QPoint(row, col)) { + m_selectionDirty = true; // Need to update slice view + } } } } |