Skip to content

Commit

Permalink
QSqlTableModel::removeRows(): don't emit extra beforeDelete
Browse files Browse the repository at this point in the history
Qt 5 seems like a welcome opportunity to stop emitting this
spurious beforeDelete signal.

Change-Id: Ib8628343ca9b8fdd85c154a206c7e2bf2c4c9dc1
Reviewed-by: Yunqiao Yin <[email protected]>
  • Loading branch information
mabrand authored and Qt by Nokia committed Feb 7, 2012
1 parent 63f6343 commit f5e1da1
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 12 deletions.
2 changes: 2 additions & 0 deletions dist/changes-5.0.0
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,8 @@ QTestLib
and log formats simultaneously.


* removeRows() no longer emits extra beforeDelete signal for out of range row.

****************************************************************************
* Database Drivers *
****************************************************************************
Expand Down
8 changes: 0 additions & 8 deletions src/sql/models/qsqltablemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -990,8 +990,6 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
if (parent.isValid() || row < 0 || count <= 0)
return false;

int initialRowCount = rowCount();

int i;
for (i = 0; i < count && row + i < rowCount(); ++i) {
int idx = row + i;
Expand All @@ -1012,12 +1010,6 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
if (d->strategy != OnManualSubmit && i > 0)
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)
return false;

Expand Down
7 changes: 3 additions & 4 deletions tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -703,10 +703,9 @@ void tst_QSqlTableModel::removeRows()
QVERIFY(!model.removeRows(1, 0, model.index(2, 0))); // can't pass a valid modelindex

QVERIFY_SQL(model, removeRows(0, 2));
QCOMPARE(beforeDeleteSpy.count(), 3);
QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 5);
QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 0);
QVERIFY(beforeDeleteSpy.at(2).at(0).toInt() == 1);
QCOMPARE(beforeDeleteSpy.count(), 2);
QVERIFY(beforeDeleteSpy.at(0).at(0).toInt() == 0);
QVERIFY(beforeDeleteSpy.at(1).at(0).toInt() == 1);
QCOMPARE(model.rowCount(), 1);
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("vohi"));
model.clear();
Expand Down

0 comments on commit f5e1da1

Please sign in to comment.