summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2012-09-28 16:27:45 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-05 03:16:22 +0200
commitc1f15c0485e6eedac6c6b4d949dbc7e2ed33091e (patch)
tree0db8d11d66658addbe88af5d8944b31423a40998 /src/sql/models
parenta97c2d8c83aecd32e0e9893ef192eef1fd6065c7 (diff)
QSqlTableModel: record(row) must use virtual data()
Commit fbf010a26617b3986e9a76bd9c004403aebfcdc2 introduced a version of record(row) that includes the generated flags, but it neglected to populate the values using virtual data() as QSqlQueryModel correctly does. Test included lest we forget again. Change-Id: I49d0f8f87cd0c5078aa6a0e8373b2cffc01f2387 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index a3fdd06442..29e9367cca 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1311,10 +1311,18 @@ QSqlRecord QSqlTableModel::record(int row) const
{
Q_D(const QSqlTableModel);
- if (d->cache.contains(row))
- return d->cache.value(row).rec();
+ // the query gets the values from virtual data()
+ QSqlRecord rec = QSqlQueryModel::record(row);
+
+ // get generated flags from the cache
+ const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(row);
+ if (mrow.op() != QSqlTableModelPrivate::None) {
+ const QSqlRecord crec = mrow.rec();
+ for (int i = 0, cnt = rec.count(); i < cnt; ++i)
+ rec.setGenerated(i, crec.isGenerated(i));
+ }
- return QSqlQueryModel::record(row);
+ return rec;
}
/*!