diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-17 09:57:00 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-17 10:09:45 +0200 |
commit | cc80770a30f3dfa43b29e14f83bf47deb5b50a92 (patch) | |
tree | 205c608d650f8917354c2cc8da1953f6b2d6f762 /src/datavisualization/engine/scatter3dcontroller.cpp | |
parent | b83dfb2537720492ebd62dfc9733035d5560dddd (diff) |
Adjust selection in item removal and insert
Implements item 1) in QTRD-2645
Task-number: QTRD-2645
Change-Id: I5c1cec438089520592a3526e1ff6095cc30afd34
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/scatter3dcontroller.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp index c3f03fb9..4527ac2a 100644 --- a/src/datavisualization/engine/scatter3dcontroller.cpp +++ b/src/datavisualization/engine/scatter3dcontroller.cpp @@ -162,8 +162,18 @@ void Scatter3DController::handleItemsRemoved(int startIndex, int count) m_isDataDirty = true; } - // Clear selection unless it is still valid - setSelectedItem(m_selectedItem, m_selectedItemSeries); + if (series == m_selectedItemSeries) { + // If items removed from selected series before the selection, adjust the selection + int selectedItem = m_selectedItem; + if (startIndex <= selectedItem) { + if ((startIndex + count) > selectedItem) + selectedItem = -1; // Selected item removed + else + selectedItem -= count; // Move selected item down by amount of item removed + + setSelectedItem(selectedItem, m_selectedItemSeries); + } + } emitNeedRender(); } @@ -178,6 +188,16 @@ void Scatter3DController::handleItemsInserted(int startIndex, int count) adjustValueAxisRange(); m_isDataDirty = true; } + + if (series == m_selectedItemSeries) { + // If items inserted to selected series before the selection, adjust the selection + int selectedItem = m_selectedItem; + if (startIndex <= selectedItem) { + selectedItem += count; + setSelectedItem(selectedItem, m_selectedItemSeries); + } + } + emitNeedRender(); } |