diff options
Diffstat (limited to 'src/datavisualization/engine')
10 files changed, 34 insertions, 3 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index a11e80cd..aa3235ee 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -215,6 +215,8 @@ public: void emitNeedRender(); + virtual void clearSelection() = 0; + virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void touchEvent(QTouchEvent *event); virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos); diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index 9b4ae6ab..6e286095 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -198,6 +198,10 @@ void Abstract3DRenderer::updateScene(Q3DScene *scene) updateInputPosition(QPoint(logicalPixelPosition.x() * m_devicePixelRatio, logicalPixelPosition.y() * m_devicePixelRatio)); + + // Synchronize the renderer scene to controller scene + scene->d_ptr->sync(*m_cachedScene->d_ptr); + if (Q3DScene::invalidSelectionPoint() == logicalPixelPosition) { updateSelectionState(SelectNone); } else { @@ -215,9 +219,6 @@ void Abstract3DRenderer::updateScene(Q3DScene *scene) updateSelectionState(SelectOnScene); } } - - // Synchronize the controller scene with renderer - scene->d_ptr->sync(*m_cachedScene->d_ptr); } void Abstract3DRenderer::reInitShaders() diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp index b152909d..a67f1adb 100644 --- a/src/datavisualization/engine/bars3dcontroller.cpp +++ b/src/datavisualization/engine/bars3dcontroller.cpp @@ -457,6 +457,11 @@ void Bars3DController::setSelectedBar(const QPoint &position, QBar3DSeries *seri } } +void Bars3DController::clearSelection() +{ + setSelectedBar(invalidSelectionPosition(), 0); +} + void Bars3DController::adjustAxisRanges() { QCategory3DAxis *categoryAxisZ = static_cast<QCategory3DAxis *>(m_axisZ); diff --git a/src/datavisualization/engine/bars3dcontroller_p.h b/src/datavisualization/engine/bars3dcontroller_p.h index 0632830e..79d3c3ba 100644 --- a/src/datavisualization/engine/bars3dcontroller_p.h +++ b/src/datavisualization/engine/bars3dcontroller_p.h @@ -92,6 +92,7 @@ public: void setSelectionMode(QAbstract3DGraph::SelectionFlags mode); void setSelectedBar(const QPoint &position, QBar3DSeries *series); + virtual void clearSelection(); virtual void handleAxisAutoAdjustRangeChangedInOrientation(QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust); virtual void handleSeriesVisibilityChangedBySender(QObject *sender); diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index ef6e1de5..af0dc7ad 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -331,6 +331,14 @@ Q3DScene *QAbstract3DGraph::scene() const } /*! + * Clears selection from all attached series. + */ +void QAbstract3DGraph::clearSelection() +{ + d_ptr->m_visualController->clearSelection(); +} + +/*! * \internal */ bool QAbstract3DGraph::event(QEvent *event) diff --git a/src/datavisualization/engine/qabstract3dgraph.h b/src/datavisualization/engine/qabstract3dgraph.h index 9441544b..5383850e 100644 --- a/src/datavisualization/engine/qabstract3dgraph.h +++ b/src/datavisualization/engine/qabstract3dgraph.h @@ -95,6 +95,8 @@ public: Q3DScene *scene() const; + void clearSelection(); + protected: bool event(QEvent *event); void resizeEvent(QResizeEvent *event); diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp index b2964c9c..3c577fe2 100644 --- a/src/datavisualization/engine/scatter3dcontroller.cpp +++ b/src/datavisualization/engine/scatter3dcontroller.cpp @@ -267,6 +267,11 @@ void Scatter3DController::setSelectedItem(int index, QScatter3DSeries *series) } } +void Scatter3DController::clearSelection() +{ + setSelectedItem(invalidSelectionIndex(), 0); +} + void Scatter3DController::adjustValueAxisRange() { QValue3DAxis *valueAxisX = static_cast<QValue3DAxis *>(m_axisX); diff --git a/src/datavisualization/engine/scatter3dcontroller_p.h b/src/datavisualization/engine/scatter3dcontroller_p.h index 8bc43636..2a37e343 100644 --- a/src/datavisualization/engine/scatter3dcontroller_p.h +++ b/src/datavisualization/engine/scatter3dcontroller_p.h @@ -73,6 +73,7 @@ public: void setSelectedItem(int index, QScatter3DSeries *series); static inline int invalidSelectionIndex() { return -1; } + virtual void clearSelection(); void synchDataToRenderer(); diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp index 7ed69466..ca546a74 100644 --- a/src/datavisualization/engine/surface3dcontroller.cpp +++ b/src/datavisualization/engine/surface3dcontroller.cpp @@ -280,6 +280,11 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer } } +void Surface3DController::clearSelection() +{ + setSelectedPoint(invalidSelectionPosition(), 0); +} + void Surface3DController::handleArrayReset() { QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series(); diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h index dcd55982..d823bd85 100644 --- a/src/datavisualization/engine/surface3dcontroller_p.h +++ b/src/datavisualization/engine/surface3dcontroller_p.h @@ -78,6 +78,7 @@ public: void setSelectionMode(QAbstract3DGraph::SelectionFlags mode); void setSelectedPoint(const QPoint &position, QSurface3DSeries *series); + virtual void clearSelection(); virtual void handleAxisAutoAdjustRangeChangedInOrientation( QAbstract3DAxis::AxisOrientation orientation, bool autoAdjust); |