diff options
Diffstat (limited to 'src/sql')
-rw-r--r-- | src/sql/models/qsqlquerymodel.cpp | 14 | ||||
-rw-r--r-- | src/sql/models/qsqlquerymodel_p.h | 4 |
2 files changed, 8 insertions, 10 deletions
diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp index dc9ef0d616..ea3bc7f20b 100644 --- a/src/sql/models/qsqlquerymodel.cpp +++ b/src/sql/models/qsqlquerymodel.cpp @@ -78,10 +78,10 @@ void QSqlQueryModelPrivate::prefetch(int limit) atEnd = true; // this is the end. } if (newBottom.row() >= 0 && newBottom.row() > bottom.row()) { - if (!resetting) + if (!nestedResetLevel) q->beginInsertRows(QModelIndex(), bottom.row() + 1, newBottom.row()); bottom = newBottom; - if (!resetting) + if (!nestedResetLevel) q->endInsertRows(); } else { bottom = newBottom; @@ -215,10 +215,9 @@ bool QSqlQueryModel::canFetchMore(const QModelIndex &parent) const void QSqlQueryModel::beginResetModel() { Q_D(QSqlQueryModel); - if (!d->resetting) { + if (!d->nestedResetLevel) QAbstractTableModel::beginResetModel(); - d->resetting = true; - } + ++d->nestedResetLevel; } /*! \internal @@ -226,10 +225,9 @@ void QSqlQueryModel::beginResetModel() void QSqlQueryModel::endResetModel() { Q_D(QSqlQueryModel); - if (d->resetting) { - d->resetting = false; + --d->nestedResetLevel; + if (!d->nestedResetLevel) QAbstractTableModel::endResetModel(); - } } /*! \fn int QSqlQueryModel::rowCount(const QModelIndex &parent) const diff --git a/src/sql/models/qsqlquerymodel_p.h b/src/sql/models/qsqlquerymodel_p.h index 3288d311a4..70f72f393f 100644 --- a/src/sql/models/qsqlquerymodel_p.h +++ b/src/sql/models/qsqlquerymodel_p.h @@ -67,7 +67,7 @@ class QSqlQueryModelPrivate: public QAbstractItemModelPrivate { Q_DECLARE_PUBLIC(QSqlQueryModel) public: - QSqlQueryModelPrivate() : atEnd(false), resetting(false) {} + QSqlQueryModelPrivate() : atEnd(false), nestedResetLevel(0) {} ~QSqlQueryModelPrivate(); void prefetch(int); @@ -80,7 +80,7 @@ public: uint atEnd : 1; QVector<QHash<int, QVariant> > headers; QVarLengthArray<int, 56> colOffsets; // used to calculate indexInQuery of columns - bool resetting; + int nestedResetLevel; }; // helpers for building SQL expressions |