diff options
-rw-r--r-- | src/sql/models/qsqltablemodel.cpp | 15 | ||||
-rw-r--r-- | tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp | 6 |
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)); } } |