summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sql/models/qsqltablemodel.cpp15
-rw-r--r--tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp6
2 files changed, 8 insertions, 13 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 7210ddce5b..437712d83e 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1212,21 +1212,16 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record)
bool isOk = true;
for (int i = 0; i < record.count(); ++i) {
int idx = d->nameToIndex(record.fieldName(i));
- if (idx == -1) {
+ if (idx == -1)
isOk = false;
- } else if (d->strategy != OnManualSubmit) {
- // historical bug: this could all be simple like OnManualSubmit, but isn't
- const QModelIndex cIndex = createIndex(row, idx);
+ else
mrow.setValue(idx, record.value(i));
- emit dataChanged(cIndex, cIndex);
- } else {
- mrow.setValue(idx, record.value(i));
- }
}
- if (d->strategy == OnManualSubmit && isOk)
+ if (columnCount())
emit dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1));
- else if (d->strategy == OnFieldChange)
+
+ if (d->strategy == OnFieldChange)
return submit();
else if (d->strategy == OnManualSubmit)
return isOk;
diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
index 518c6b6d25..a819cb720c 100644
--- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -412,10 +412,10 @@ void tst_QSqlTableModel::setRecord()
model.submit();
else {
// dataChanged() is not emitted when submitAll() is called
- QCOMPARE(spy.count(), model.columnCount());
+ QCOMPARE(spy.count(), 1);
QCOMPARE(spy.at(0).count(), 2);
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(1).at(0)), model.index(i, 1));
- QCOMPARE(qvariant_cast<QModelIndex>(spy.at(1).at(1)), model.index(i, 1));
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(0)), model.index(i, 0));
+ QCOMPARE(qvariant_cast<QModelIndex>(spy.at(0).at(1)), model.index(i, rec.count() - 1));
}
}