diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-02-05 11:16:45 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-02-05 11:21:48 +0200 |
commit | 83611a966a77e5962adfcebe75f5aca49fc5971e (patch) | |
tree | e4e19ad728bb1f853ba08a9723d9c780e4b74a6c /src/datavisualization/engine | |
parent | 79f3a4d7aa2fcbdc5df133ede88a367aa5870bd3 (diff) |
Fix slice update for bars, too.
Also revert the incorrect change to surface slice update.
Change-Id: If08d5848e5b216f4f6b82e39727eeb7facd463ca
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/bars3dcontroller.cpp | 26 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3dcontroller_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3dcontroller.cpp | 4 |
3 files changed, 18 insertions, 14 deletions
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index 5bd37ccf..c49a6bb0 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -109,7 +109,7 @@ void Bars3DController::handleArrayReset() m_isDataDirty = true; } // Clear selection unless still valid - setSelectedBar(m_selectedBar, m_selectedBarSeries); + setSelectedBar(m_selectedBar, m_selectedBarSeries, false); emitNeedRender(); } @@ -152,7 +152,7 @@ void Bars3DController::handleRowsRemoved(int startIndex, int count) else selectedRow -= count; // Move selected row down by amount of rows removed - setSelectedBar(QPoint(selectedRow, m_selectedBar.y()), m_selectedBarSeries); + setSelectedBar(QPoint(selectedRow, m_selectedBar.y()), m_selectedBarSeries, false); } } @@ -174,7 +174,7 @@ void Bars3DController::handleRowsInserted(int startIndex, int count) int selectedRow = m_selectedBar.x(); if (startIndex <= selectedRow) { selectedRow += count; - setSelectedBar(QPoint(selectedRow, m_selectedBar.y()), m_selectedBarSeries); + setSelectedBar(QPoint(selectedRow, m_selectedBar.y()), m_selectedBarSeries, false); } } @@ -240,9 +240,9 @@ void Bars3DController::handleSeriesVisibilityChangedBySender(QObject *sender) adjustAxisRanges(); - // Visibility changes may require disabling/enabling slicing, + // Visibility changes may require disabling slicing, // so just reset selection to ensure everything is still valid. - setSelectedBar(m_selectedBar, m_selectedBarSeries); + setSelectedBar(m_selectedBar, m_selectedBarSeries, false); } void Bars3DController::handlePendingClick() @@ -251,7 +251,7 @@ void Bars3DController::handlePendingClick() QPoint position = m_renderer->clickedPosition(); QBar3DSeries *series = static_cast<QBar3DSeries *>(m_renderer->clickedSeries()); - setSelectedBar(position, series); + setSelectedBar(position, series, true); m_renderer->resetClickedStatus(); } @@ -309,7 +309,7 @@ void Bars3DController::removeSeries(QAbstract3DSeries *series) Abstract3DController::removeSeries(series); if (m_selectedBarSeries == series) - setSelectedBar(invalidSelectionPosition(), 0); + setSelectedBar(invalidSelectionPosition(), 0, false); if (wasVisible) adjustAxisRanges(); @@ -348,7 +348,7 @@ void Bars3DController::insertSeries(int index, QAbstract3DSeries *series) } if (barSeries->selectedBar() != invalidSelectionPosition()) - setSelectedBar(barSeries->selectedBar(), barSeries); + setSelectedBar(barSeries->selectedBar(), barSeries, false); if (!oldSize) emit primarySeriesChanged(m_primarySeries); @@ -381,7 +381,7 @@ void Bars3DController::handleAxisRangeChangedBySender(QObject *sender) Abstract3DController::handleAxisRangeChangedBySender(sender); // Update selected bar - may be moved offscreen - setSelectedBar(m_selectedBar, m_selectedBarSeries); + setSelectedBar(m_selectedBar, m_selectedBarSeries, false); } void Bars3DController::setMultiSeriesScaling(bool uniform) @@ -436,7 +436,7 @@ void Bars3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode) if (mode != oldMode) { // Refresh selection upon mode change to ensure slicing is correctly updated // according to series the visibility. - setSelectedBar(m_selectedBar, m_selectedBarSeries); + setSelectedBar(m_selectedBar, m_selectedBarSeries, true); // Special case: Always deactivate slicing when changing away from slice // automanagement, as this can't be handled in setSelectedBar. @@ -448,7 +448,7 @@ void Bars3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode) } } -void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *series) +void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *series, bool enterSlice) { // If the selection targets non-existent bar, clear selection instead. QPoint pos = position; @@ -465,7 +465,7 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri || pos.y() < m_axisX->min() || pos.y() > m_axisX->max() || !series->isVisible()) { scene()->setSlicingActive(false); - } else { + } else if (enterSlice) { scene()->setSlicingActive(true); } emitNeedRender(); @@ -491,7 +491,7 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri void Bars3DController::clearSelection() { - setSelectedBar(invalidSelectionPosition(), 0); + setSelectedBar(invalidSelectionPosition(), 0, false); } void Bars3DController::adjustAxisRanges() diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h index e704aea1..d41af02d 100644 --- a/src/datavisualization/engine/bars3dcontroller_p.h +++ b/src/datavisualization/engine/bars3dcontroller_p.h @@ -95,7 +95,7 @@ public: bool isBarSpecRelative(); void setSelectionMode(QAbstract3DGraph::SelectionFlags mode); - void setSelectedBar(const QPoint &position, QBar3DSeries *series); + void setSelectedBar(const QPoint &position, QBar3DSeries *series, bool enterSlice); virtual void clearSelection(); virtual void handleAxisAutoAdjustRangeChangedInOrientation(QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust); diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp index 5aeecb20..664c4a71 100644 --- a/src/datavisualization/engine/surface3dcontroller.cpp +++ b/src/datavisualization/engine/surface3dcontroller.cpp @@ -111,6 +111,10 @@ void Surface3DController::handleSeriesVisibilityChangedBySender(QObject *sender) Abstract3DController::handleSeriesVisibilityChangedBySender(sender); adjustValueAxisRange(); + + // Visibility changes may require disabling slicing, + // so just reset selection to ensure everything is still valid. + setSelectedPoint(m_selectedPoint, m_selectedSeries, false); } void Surface3DController::handlePendingClick() |