diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp index 782261d..14e623c 100644 --- a/src/view/grid/GridAccount.cpp +++ b/src/view/grid/GridAccount.cpp @@ -144,11 +144,12 @@ Operation& GridAccount::GetOperation(const wxString& id) void GridAccount::UpdateOperation(Operation& op) { std::vector::iterator it; + int i; - for(it=_operations->begin(); it!=_operations->end(); it++) - if (it->id == op.id) + for(i=0; i < (int)_operations->size(); i++) + if ((*_operations)[i].id == op.id) { - *it = op; + (*_operations)[i] = op; _kiss->UpdateOperation(op); break; } @@ -525,12 +526,12 @@ void GridAccount::RemoveMeta(Operation& op, int line, bool removeRoot, bool dele { DeleteRows(line, 1); _displayedOperations.erase(_displayedOperations.begin()+line); + if (op.fix_cost) _fixCosts--; if (deleteOp) { DeleteOperation(op); _kiss->DeleteOperation(op); } - if (op.fix_cost) _fixCosts--; } treeRenderer->DecRef(); @@ -1117,7 +1118,7 @@ void GridAccount::Group() std::vector::iterator it3; wxString parent = wxT(""); Operation op, op2; - int fix = -1, i, row; + int fix = -1, i, a, row; GetSelectedOperations(&selected); @@ -1197,27 +1198,17 @@ void GridAccount::Group() for(i=0; i<(int)rows.size(); i++) { - if (rows[i] >= i) - { - if (ops[i].meta) - RemoveMeta(ops[i], rows[i]-i, true, false); - else - { - if (ops[i].fix_cost) _fixCosts--; - DeleteRows(rows[i]-i, 1); - _displayedOperations.erase(_displayedOperations.begin()+rows[i]-i); - } - } + if (ops[i].meta) + RemoveMeta(ops[i], rows[i], true, false); else { - if (ops[i].meta) - RemoveMeta(ops[i], rows[i], true, false); - else - { - if (ops[i].fix_cost) _fixCosts--; - DeleteRows(rows[i], 1); - _displayedOperations.erase(_displayedOperations.begin()+rows[i]); - } + if (ops[i].fix_cost) _fixCosts--; + DeleteRows(rows[i], 1); + _displayedOperations.erase(_displayedOperations.begin()+rows[i]); + + for(a=i+1; a<(int)rows.size(); a++) + if (rows[a] >= rows[i]) + rows[a]--; } } @@ -1319,14 +1310,12 @@ removeLastGroup: { op2 = GetOperation(ops2[i]); op2.parent = wxT(""); - _kiss->UpdateOperation(op2); - if (op2.fix_cost) _fixCosts--; + UpdateOperation(op2); InsertIntoGrid(op2); } _kiss->DeleteOperation(op); DeleteOperation(op); - if (op.fix_cost) _fixCosts--; } else { @@ -1339,7 +1328,7 @@ removeLastGroup: { op = ops[i]; op.parent = wxT(""); - _kiss->UpdateOperation(op); + UpdateOperation(op); line = GetDisplayedRow(op.id); DeleteRows(line, 1); _displayedOperations.erase(_displayedOperations.begin()+line); @@ -1363,6 +1352,6 @@ removeLastGroup: goto removeLastGroup; } - _kiss->UpdateOperation(op2); + UpdateOperation(op2); } }