summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surface3dcontroller.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/surface3dcontroller.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/surface3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index 7c7b7a90..cf844c0f 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -111,6 +111,8 @@ 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);
@@ -134,7 +136,8 @@ void Surface3DController::addSeries(QAbstract3DSeries *series)
if (!m_seriesList.size()) {
Abstract3DController::addSeries(series);
- adjustValueAxisRange();
+ if (series->isVisible())
+ adjustValueAxisRange();
} else {
qWarning("Surface graph only supports a single series.");
}
@@ -146,14 +149,15 @@ void Surface3DController::addSeries(QAbstract3DSeries *series)
void Surface3DController::removeSeries(QAbstract3DSeries *series)
{
- if (series && series->d_ptr->m_controller == this) {
- Abstract3DController::removeSeries(series);
+ bool wasVisible = (series && series->d_ptr->m_controller == this && series->isVisible());
+
+ Abstract3DController::removeSeries(series);
- if (m_selectedSeries == series)
- setSelectedPoint(invalidSelectionPosition(), 0);
+ if (m_selectedSeries == series)
+ setSelectedPoint(invalidSelectionPosition(), 0);
+ if (wasVisible)
adjustValueAxisRange();
- }
}
QList<QSurface3DSeries *> Surface3DController::surfaceSeriesList()
@@ -266,8 +270,11 @@ void Surface3DController::setSelectedPoint(const QPoint &position, QSurface3DSer
void Surface3DController::handleArrayReset()
{
- adjustValueAxisRange();
- m_isDataDirty = true;
+ QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ if (series->isVisible()) {
+ adjustValueAxisRange();
+ m_isDataDirty = true;
+ }
// Clear selection unless still valid
setSelectedPoint(m_selectedPoint, m_selectedSeries);
emitNeedRender();
@@ -299,7 +306,8 @@ void Surface3DController::handleRowsChanged(int startIndex, int count)
if (m_changedRows.size() == 0)
m_changedRows.reserve(sender->rowCount());
- if (static_cast<QSurface3DSeries *>(m_seriesList.at(0)) == sender->series()) {
+ QSurface3DSeries *series = sender->series();
+ if (series->isVisible()) {
// Change is for the visible series, put the change to queue
int oldChangeCount = m_changedRows.size();
for (int i = 0; i < count; i++) {
@@ -328,7 +336,8 @@ void Surface3DController::handleRowsChanged(int startIndex, int count)
void Surface3DController::handleItemChanged(int rowIndex, int columnIndex)
{
QSurfaceDataProxy *sender = static_cast<QSurfaceDataProxy *>(QObject::sender());
- if (static_cast<QSurface3DSeries *>(m_seriesList.at(0)) == sender->series()) {
+ QSurface3DSeries *series = sender->series();
+ if (series->isVisible()) {
// Change is for the visible series, put the change to queue
bool newItem = true;
QPoint candidate(columnIndex, rowIndex);
@@ -354,8 +363,11 @@ void Surface3DController::handleRowsAdded(int startIndex, int count)
{
Q_UNUSED(startIndex)
Q_UNUSED(count)
- adjustValueAxisRange();
- m_isDataDirty = true;
+ QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ if (series->isVisible()) {
+ adjustValueAxisRange();
+ m_isDataDirty = true;
+ }
emitNeedRender();
}
@@ -363,8 +375,11 @@ void Surface3DController::handleRowsInserted(int startIndex, int count)
{
Q_UNUSED(startIndex)
Q_UNUSED(count)
- adjustValueAxisRange();
- m_isDataDirty = true;
+ QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ if (series->isVisible()) {
+ adjustValueAxisRange();
+ m_isDataDirty = true;
+ }
emitNeedRender();
}
@@ -372,8 +387,11 @@ void Surface3DController::handleRowsRemoved(int startIndex, int count)
{
Q_UNUSED(startIndex)
Q_UNUSED(count)
- adjustValueAxisRange();
- m_isDataDirty = true;
+ QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ if (series->isVisible()) {
+ adjustValueAxisRange();
+ m_isDataDirty = true;
+ }
// Clear selection unless still valid
setSelectedPoint(m_selectedPoint, m_selectedSeries);