From 196a0cc5aba3199aff8d08cccad4aeba09b00dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sat, 27 Jul 2019 14:01:56 +0200 Subject: [PATCH] Fix bug: Check index in ctrl+t, ctrl+r and suppr callback to avoid doing something on non existant operation --- ChangeLog | 6 ++++++ src/view/grid/GridAccount.cpp | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f51cb29..92ab220 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +v0.9 (27/07/2019) +** User ** +** Dev ** +** Bugs ** + Check index in ctrl+t, ctrl+r and suppr callback to avoid doing something on non existant operation + v0.8 (29/01/2019) ** User ** Add multi month operation support : Normal operation with description "... (XX/YY)" will be forwarded to next month diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp index bbe5ac6..f7f1a11 100644 --- a/src/view/grid/GridAccount.cpp +++ b/src/view/grid/GridAccount.cpp @@ -1670,7 +1670,7 @@ void GridAccount::OnCtrlT(void) { Operation op, op2; QModelIndexList selected = selectedIndexes(); - int account, idx; + int account, idx, row; bool groupOperations; User* user = _kiss->GetUser(); std::vector::iterator it; @@ -1678,7 +1678,12 @@ void GridAccount::OnCtrlT(void) if (selected.size() > 1 || !selected.size()) return; - op = _displayedOperations[selected[0].row()] ; + row = selected[0].row(); + + if (row == _fixCosts || row == (int)_displayedOperations.size()-1) + return; + + op = _displayedOperations[row] ; if (op.parent || op.meta || op.transfert) return; @@ -1723,7 +1728,10 @@ void GridAccount::OnCtrlR(void) for (int i = 0; i < selected.size(); ++i) { row = selected[i].row(); - + + if (row == _fixCosts || row == (int)_displayedOperations.size()-1) + continue; + it = std::find(rows.begin(), rows.end(), row); if (it != rows.end()) @@ -1746,6 +1754,9 @@ void GridAccount::OnSuppr(void) { row = selected[i].row(); + if (row == _fixCosts || row == (int)_displayedOperations.size()-1) + continue; + it = std::find(rows.begin(), rows.end(), row); if (it != rows.end())