diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-02-22 11:57:03 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-02-22 11:57:03 +0200 |
commit | b3d485323aa99d999511694e3e3c0496b5b4e3ca (patch) | |
tree | aa2bd95d3bdc4675c92dca89433f109ad71dc91c /src | |
parent | dc3d4ff0038e274edde3b3387795fcef30beaabc (diff) |
Fix crash when changing the values to empty model with logarithmic axis
One zero or negative value invalidates the whole layout for logarithmic
axes, but this wasn't taken into account when replacing the points.
Task-number: QTRD-1914
Reviewed-by: Mika Salmela
Diffstat (limited to 'src')
-rw-r--r-- | src/xychart/xychart.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/xychart/xychart.cpp b/src/xychart/xychart.cpp index 26bed339..9b808edd 100644 --- a/src/xychart/xychart.cpp +++ b/src/xychart/xychart.cpp @@ -84,16 +84,15 @@ void XYChart::handlePointAdded(int index) QVector<QPointF> points; - if (m_dirty) { + if (m_dirty || m_points.isEmpty()) { points = domain()->calculateGeometryPoints(m_series->points()); } else { points = m_points; QPointF point = domain()->calculateGeometryPoint(m_series->points()[index], m_validData); - if (!m_validData) { + if (!m_validData) m_points.clear(); - return; - } - points.insert(index, point); + else + points.insert(index, point); } updateChart(m_points, points, index); @@ -106,7 +105,7 @@ void XYChart::handlePointRemoved(int index) QVector<QPointF> points; - if (m_dirty) { + if (m_dirty || m_points.isEmpty()) { points = domain()->calculateGeometryPoints(m_series->points()); } else { points = m_points; @@ -123,16 +122,15 @@ void XYChart::handlePointReplaced(int index) QVector<QPointF> points; - if (m_dirty) { + if (m_dirty || m_points.isEmpty()) { points = domain()->calculateGeometryPoints(m_series->points()); } else { QPointF point = domain()->calculateGeometryPoint(m_series->points()[index], m_validData); - if (!m_validData) { + if (!m_validData) m_points.clear(); - return; - } points = m_points; - points.replace(index, point); + if (m_validData) + points.replace(index, point); } updateChart(m_points, points, index); |