summaryrefslogtreecommitdiffstats
path: root/src/sql/models
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2012-09-28 14:21:26 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-05 03:16:21 +0200
commita97c2d8c83aecd32e0e9893ef192eef1fd6065c7 (patch)
treefc8a44b0efc5889231864f7754e9e61cd8975fe2 /src/sql/models
parent10ff9de91bedf93852f13a58287afd8831644759 (diff)
QSqlTableModel: restore use of virtual setData() in setRecord()
setRecord() should use setData() as intended so that reimplementations of setData() in subclasses will be respected. Commit 11bd543d901f67f79db3f5b5dfaa626c6e8faa45 failed to consider this. Test added which should prevent this mistake being repeated. Change-Id: Ia2d930cd42b5a27521bb389edb1b07fb1bf0fa36 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Diffstat (limited to 'src/sql/models')
-rw-r--r--src/sql/models/qsqltablemodel.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index b979a1a23a..a3fdd06442 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1373,15 +1373,17 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &values)
Map::const_iterator i = map.constBegin();
const Map::const_iterator e = map.constEnd();
for ( ; i != e; ++i) {
- mrow.setValue(i.value(), values.value(i.key()));
- // mrow.setValue() sets generated to TRUE, but source record should prevail.
+ // have to use virtual setData() here rather than mrow.setValue()
+ EditStrategy strategy = d->strategy;
+ d->strategy = OnManualSubmit;
+ QModelIndex cIndex = createIndex(row, i.value());
+ setData(cIndex, values.value(i.key()));
+ d->strategy = strategy;
+ // setData() sets generated to TRUE, but source record should prevail.
if (!values.isGenerated(i.key()))
mrow.recRef().setGenerated(i.value(), false);
}
- if (columnCount())
- emit dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1));
-
if (d->strategy != OnManualSubmit)
return submit();