summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Goddard <michael.goddard@nokia.com>2010-11-17 07:30:40 (GMT)
committerJason McDonald <jason.mcdonald@nokia.com>2011-02-09 07:10:45 (GMT)
commite8eea4ed6a09a4adbf3850a6943b50b9817122f8 (patch)
tree002fa1a17ca40db8ab929243a696fbf3d4331dbe /src
parent8d284e23c17c268c97ac226760265d1168320658 (diff)
downloadQt-e8eea4ed6a09a4adbf3850a6943b50b9817122f8.zip
Qt-e8eea4ed6a09a4adbf3850a6943b50b9817122f8.tar.gz
Qt-e8eea4ed6a09a4adbf3850a6943b50b9817122f8.tar.bz2
Fix some removeRows issues with QSqlTableModel.
Added some better unit testing around the problem areas. Change-Id: Ie4749da298aebbae6aec9558ebe8c8f2196c705f Task-number: QTBUG-14916 Reviewed-by: Charles Yin (cherry picked from commit bdd4a9149789f60974603e1f7621d51378f0a108)
Diffstat (limited to 'src')
-rw-r--r--src/sql/models/qsqltablemodel.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 764c879..ca491c4 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1097,9 +1097,12 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
int idx = row + i;
if (idx >= rowCount())
return false;
- if (d->cache.value(idx).op == QSqlTableModelPrivate::Insert)
+ if (d->cache.value(idx).op == QSqlTableModelPrivate::Insert) {
revertRow(idx);
- else {
+ // Reverting a row means all the other cache entries have been adjusted downwards
+ // so fake this by adjusting row
+ --row;
+ } else {
d->cache[idx].op = QSqlTableModelPrivate::Delete;
d->cache[idx].primaryValues = d->primaryValues(indexInQuery(createIndex(idx, 0)).row());
emit headerDataChanged(Qt::Vertical, idx, idx);