summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/scatter3dcontroller.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-13 10:22:43 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-13 12:31:40 +0200
commit02f950176d3a0488875d451d3da0fc8b2312bec0 (patch)
tree96a8078687db743986f150918f47a231ecf55134 /src/datavisualization/engine/scatter3dcontroller.cpp
parentd85201ec4aa738232e4ef085b78114c744cbcaa1 (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.cpp50
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