diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-13 10:22:43 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-13 12:31:40 +0200 |
commit | 02f950176d3a0488875d451d3da0fc8b2312bec0 (patch) | |
tree | 96a8078687db743986f150918f47a231ecf55134 /src/datavisualization/engine/scatter3dcontroller.cpp | |
parent | d85201ec4aa738232e4ef085b78114c744cbcaa1 (diff) |
Fix axis range autoadjustment relating to series visibility
No need to recalc ranges when a change targets non-visible series.
Change-Id: Ifd80b876ba279917a5bded8240721d00d66a6f05
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/scatter3dcontroller.cpp | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp index 58706705..0c991839 100644 --- a/src/datavisualization/engine/scatter3dcontroller.cpp +++ b/src/datavisualization/engine/scatter3dcontroller.cpp @@ -80,11 +80,9 @@ void Scatter3DController::addSeries(QAbstract3DSeries *series) { Q_ASSERT(series && series->type() == QAbstract3DSeries::SeriesTypeScatter); - bool firstAdded = !m_seriesList.size(); - Abstract3DController::addSeries(series); - if (firstAdded) + if (series->isVisible()) adjustValueAxisRange(); QScatter3DSeries *scatterSeries = static_cast<QScatter3DSeries *>(series); @@ -94,14 +92,14 @@ void Scatter3DController::addSeries(QAbstract3DSeries *series) void Scatter3DController::removeSeries(QAbstract3DSeries *series) { - bool firstRemoved = (m_seriesList.size() && m_seriesList.at(0) == series); + bool wasVisible = (series && series->d_ptr->m_controller == this && series->isVisible()); Abstract3DController::removeSeries(series); if (m_selectedItemSeries == series) setSelectedItem(invalidSelectionIndex(), 0); - if (firstRemoved) + if (wasVisible) adjustValueAxisRange(); } @@ -120,8 +118,11 @@ QList<QScatter3DSeries *> Scatter3DController::scatterSeriesList() void Scatter3DController::handleArrayReset() { - adjustValueAxisRange(); - m_isDataDirty = true; + QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series(); + if (series->isVisible()) { + adjustValueAxisRange(); + m_isDataDirty = true; + } setSelectedItem(m_selectedItem, m_selectedItemSeries); emitNeedRender(); } @@ -131,8 +132,11 @@ void Scatter3DController::handleItemsAdded(int startIndex, int count) Q_UNUSED(startIndex) Q_UNUSED(count) // TODO should dirty only affected values? - adjustValueAxisRange(); - m_isDataDirty = true; + QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series(); + if (series->isVisible()) { + adjustValueAxisRange(); + m_isDataDirty = true; + } emitNeedRender(); } @@ -141,8 +145,11 @@ void Scatter3DController::handleItemsChanged(int startIndex, int count) Q_UNUSED(startIndex) Q_UNUSED(count) // TODO should dirty only affected values? - adjustValueAxisRange(); - m_isDataDirty = true; + QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series(); + if (series->isVisible()) { + adjustValueAxisRange(); + m_isDataDirty = true; + } emitNeedRender(); } @@ -151,8 +158,11 @@ void Scatter3DController::handleItemsRemoved(int startIndex, int count) Q_UNUSED(startIndex) Q_UNUSED(count) // TODO should dirty only affected values? - adjustValueAxisRange(); - m_isDataDirty = true; + QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series(); + if (series->isVisible()) { + adjustValueAxisRange(); + m_isDataDirty = true; + } // Clear selection unless it is still valid setSelectedItem(m_selectedItem, m_selectedItemSeries); @@ -165,8 +175,11 @@ void Scatter3DController::handleItemsInserted(int startIndex, int count) Q_UNUSED(startIndex) Q_UNUSED(count) // TODO should dirty only affected values? - adjustValueAxisRange(); - m_isDataDirty = true; + QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series(); + if (series->isVisible()) { + adjustValueAxisRange(); + m_isDataDirty = true; + } emitNeedRender(); } @@ -194,6 +207,13 @@ void Scatter3DController::handleAxisRangeChangedBySender(QObject *sender) setSelectedItem(m_selectedItem, m_selectedItemSeries); } +void Scatter3DController::handleSeriesVisibilityChangedBySender(QObject *sender) +{ + Abstract3DController::handleSeriesVisibilityChangedBySender(sender); + + adjustValueAxisRange(); +} + void Scatter3DController::setSelectionMode(QDataVis::SelectionFlags mode) { // We only support single item selection mode and no selection mode |