summaryrefslogtreecommitdiffstats
path: root/src/sql/models/qsqltablemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sql/models/qsqltablemodel.cpp')
-rw-r--r--src/sql/models/qsqltablemodel.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index f7198978dd..40315da204 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -364,18 +364,9 @@ bool QSqlTableModel::select()
if (query.isEmpty())
return false;
- QSqlTableModelPrivate::CacheMap::Iterator it = d->cache.end();
- while (it != d->cache.constBegin()) {
- --it;
- // rows must be accounted for
- if (it.value().insert()) {
- beginRemoveRows(QModelIndex(), it.key(), it.key());
- it = d->cache.erase(it);
- endRemoveRows();
- } else {
- it = d->cache.erase(it);
- }
- }
+ beginResetModel();
+
+ d->clearCache();
QSqlQuery qu(query, d->db);
setQuery(qu);
@@ -383,8 +374,10 @@ bool QSqlTableModel::select()
if (!qu.isActive() || lastError().isValid()) {
// something went wrong - revert to non-select state
d->initRecordAndPrimaryIndex();
+ endResetModel();
return false;
}
+ endResetModel();
return true;
}