QSqlTableModel::removeRows(): don't emit extra beforeDelete
Qt 5 seems like a welcome opportunity to stop emitting this spurious beforeDelete signal. Change-Id: Ib8628343ca9b8fdd85c154a206c7e2bf2c4c9dc1 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
This commit is contained in:
parent
63f634322b
commit
f5e1da12f0
2
dist/changes-5.0.0
vendored
2
dist/changes-5.0.0
vendored
@ -329,6 +329,8 @@ QTestLib
|
|||||||
and log formats simultaneously.
|
and log formats simultaneously.
|
||||||
|
|
||||||
|
|
||||||
|
* removeRows() no longer emits extra beforeDelete signal for out of range row.
|
||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
* Database Drivers *
|
* Database Drivers *
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
@ -990,8 +990,6 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
|
|||||||
if (parent.isValid() || row < 0 || count <= 0)
|
if (parent.isValid() || row < 0 || count <= 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int initialRowCount = rowCount();
|
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < count && row + i < rowCount(); ++i) {
|
for (i = 0; i < count && row + i < rowCount(); ++i) {
|
||||||
int idx = row + i;
|
int idx = row + i;
|
||||||
@ -1012,12 +1010,6 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
|
|||||||
if (d->strategy != OnManualSubmit && i > 0)
|
if (d->strategy != OnManualSubmit && i > 0)
|
||||||
submit();
|
submit();
|
||||||
|
|
||||||
// historical bug: emit beforeDelete for 1st row beyond end
|
|
||||||
if (d->strategy != OnManualSubmit) {
|
|
||||||
if (row + count > initialRowCount)
|
|
||||||
emit beforeDelete(qMax(initialRowCount, row));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i < count)
|
if (i < count)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -703,10 +703,9 @@ void tst_QSqlTableModel::removeRows()
|
|||||||
QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
|
QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex
|
||||||
|
|
||||||
QVERIFY_SQL(model, removeRows(0, 2));
|
QVERIFY_SQL(model, removeRows(0, 2));
|
||||||
QCOMPARE(beforeDeleteSpy.count(), 3);
|
QCOMPARE(beforeDeleteSpy.count(), 2);
|
||||||
QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 5);
|
QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 0);
|
||||||
QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 0);
|
QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 1);
|
||||||
QVERIFY(beforeDeleteSpy.at(2).at(0).toInt() == 1);
|
|
||||||
QCOMPARE(model.rowCount(), 1);
|
QCOMPARE(model.rowCount(), 1);
|
||||||
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
|
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
|
||||||
model.clear();
|
model.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user