diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-02-04 14:48:34 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-02-05 10:26:36 +0200 |
commit | 79f3a4d7aa2fcbdc5df133ede88a367aa5870bd3 (patch) | |
tree | a66a16e576a4918f20b1a388d8fd3c5150603e57 /src/datavisualization/engine/surface3dcontroller.cpp | |
parent | 81234154b77ad079999542a4dd4bee454c46fb26 (diff) |
Add qmloscilloscope example
+Fix itemAt() in surface proxy
+Add itemAt(QPoint) in bar and surface proxies
+Misc fixes to other examples
Task-number: QTRD-2816
Change-Id: I5e06cfce98f74719a20885e3ca5a1e6fefb23a9c
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/surface3dcontroller.cpp | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp index 0eb66d0e..5aeecb20 100644 --- a/src/datavisualization/engine/surface3dcontroller.cpp +++ b/src/datavisualization/engine/surface3dcontroller.cpp @@ -103,7 +103,7 @@ void Surface3DController::handleAxisRangeChangedBySender(QObject *sender) Abstract3DController::handleAxisRangeChangedBySender(sender); // Update selected point - may be moved offscreen - setSelectedPoint(m_selectedPoint, m_selectedSeries); + setSelectedPoint(m_selectedPoint, m_selectedSeries, false); } void Surface3DController::handleSeriesVisibilityChangedBySender(QObject *sender) @@ -111,10 +111,6 @@ void Surface3DController::handleSeriesVisibilityChangedBySender(QObject *sender) Abstract3DController::handleSeriesVisibilityChangedBySender(sender); adjustValueAxisRange(); - - // Visibility changes may require disabling/enabling slicing, - // so just reset selection to ensure everything is still valid. - setSelectedPoint(m_selectedPoint, m_selectedSeries); } void Surface3DController::handlePendingClick() @@ -123,7 +119,7 @@ void Surface3DController::handlePendingClick() QPoint position = m_renderer->clickedPosition(); QSurface3DSeries *series = static_cast<QSurface3DSeries *>(m_renderer->clickedSeries()); - setSelectedPoint(position, series); + setSelectedPoint(position, series, true); m_renderer->resetClickedStatus(); } @@ -154,7 +150,7 @@ void Surface3DController::addSeries(QAbstract3DSeries *series) QSurface3DSeries *surfaceSeries = static_cast<QSurface3DSeries *>(series); if (surfaceSeries->selectedPoint() != invalidSelectionPosition()) - setSelectedPoint(surfaceSeries->selectedPoint(), surfaceSeries); + setSelectedPoint(surfaceSeries->selectedPoint(), surfaceSeries, false); } void Surface3DController::removeSeries(QAbstract3DSeries *series) @@ -164,7 +160,7 @@ void Surface3DController::removeSeries(QAbstract3DSeries *series) Abstract3DController::removeSeries(series); if (m_selectedSeries == series) - setSelectedPoint(invalidSelectionPosition(), 0); + setSelectedPoint(invalidSelectionPosition(), 0, false); if (wasVisible) adjustValueAxisRange(); @@ -203,7 +199,7 @@ void Surface3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode if (mode != oldMode) { // Refresh selection upon mode change to ensure slicing is correctly updated // according to series the visibility. - setSelectedPoint(m_selectedPoint, m_selectedSeries); + setSelectedPoint(m_selectedPoint, m_selectedSeries, true); // Special case: Always deactivate slicing when changing away from slice // automanagement, as this can't be handled in setSelectedBar. @@ -215,7 +211,7 @@ void Surface3DController::setSelectionMode(QAbstract3DGraph::SelectionFlags mode } } -void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSeries *series) +void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSeries *series, bool enterSlice) { // If the selection targets non-existent point, clear selection instead. QPoint pos = position; @@ -253,7 +249,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer if (item.x() < axisMinX || item.x() > axisMaxX || item.z() < axisMinZ || item.z() > axisMaxZ) { scene()->setSlicingActive(false); - } else { + } else if (enterSlice) { scene()->setSlicingActive(true); } } @@ -280,7 +276,7 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer void Surface3DController::clearSelection() { - setSelectedPoint(invalidSelectionPosition(), 0); + setSelectedPoint(invalidSelectionPosition(), 0, false); } void Surface3DController::handleArrayReset() @@ -291,7 +287,7 @@ void Surface3DController::handleArrayReset() m_isDataDirty = true; } // Clear selection unless still valid - setSelectedPoint(m_selectedPoint, m_selectedSeries); + setSelectedPoint(m_selectedPoint, m_selectedSeries, false); emitNeedRender(); } @@ -335,7 +331,7 @@ void Surface3DController::handleRowsChanged(int startIndex, int count) adjustValueAxisRange(); // Clear selection unless still valid - setSelectedPoint(m_selectedPoint, m_selectedSeries); + setSelectedPoint(m_selectedPoint, m_selectedSeries, false); emitNeedRender(); } } @@ -361,7 +357,7 @@ void Surface3DController::handleItemChanged(int rowIndex, int columnIndex) adjustValueAxisRange(); // Clear selection unless still valid - setSelectedPoint(m_selectedPoint, m_selectedSeries); + setSelectedPoint(m_selectedPoint, m_selectedSeries, false); emitNeedRender(); } } @@ -389,7 +385,7 @@ void Surface3DController::handleRowsInserted(int startIndex, int count) int selectedRow = m_selectedPoint.x(); if (startIndex <= selectedRow) { selectedRow += count; - setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries); + setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries, false); } } @@ -415,7 +411,7 @@ void Surface3DController::handleRowsRemoved(int startIndex, int count) else selectedRow -= count; // Move selected row down by amount of rows removed - setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries); + setSelectedPoint(QPoint(selectedRow, m_selectedPoint.y()), m_selectedSeries, false); } } |