aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktableview.cpp6
-rw-r--r--tests/auto/quick/qquicktableview/tst_qquicktableview.cpp23
2 files changed, 23 insertions, 6 deletions
diff --git a/src/quick/items/qquicktableview.cpp b/src/quick/items/qquicktableview.cpp
index 880aa5efd5..0a980bc01c 100644
--- a/src/quick/items/qquicktableview.cpp
+++ b/src/quick/items/qquicktableview.cpp
@@ -889,15 +889,17 @@ void QQuickTableViewPrivate::processRebuildTable()
return;
}
+ const bool preload = (reusableFlag == QQmlTableInstanceModel::Reusable);
+
if (rebuildState == RebuildState::PreloadColumns) {
- if (loadedTable.right() < tableSize.width() - 1)
+ if (preload && loadedTable.right() < tableSize.width() - 1)
loadEdge(Qt::RightEdge, QQmlIncubator::AsynchronousIfNested);
if (!moveToNextRebuildState())
return;
}
if (rebuildState == RebuildState::PreloadRows) {
- if (loadedTable.bottom() < tableSize.height() - 1)
+ if (preload && loadedTable.bottom() < tableSize.height() - 1)
loadEdge(Qt::BottomEdge, QQmlIncubator::AsynchronousIfNested);
if (!moveToNextRebuildState())
return;
diff --git a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
index 5e1c21fce8..99534ddb50 100644
--- a/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
+++ b/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
@@ -85,6 +85,7 @@ private slots:
void setAndGetModel();
void emptyModel_data();
void emptyModel();
+ void checkPreload_data();
void checkPreload();
void checkZeroSizedDelegate();
void checkImplicitSizeDelegate();
@@ -195,20 +196,34 @@ void tst_QQuickTableView::emptyModel()
QCOMPARE(tableViewPrivate->loadedItems.count(), 0);
}
+void tst_QQuickTableView::checkPreload_data()
+{
+ QTest::addColumn<bool>("reuseItems");
+
+ QTest::newRow("reuse") << true;
+ QTest::newRow("not reuse") << false;
+}
+
void tst_QQuickTableView::checkPreload()
{
// Check that the reuse pool is filled up with one extra row and
- // column (pluss corner) after rebuilding the table.
+ // column (pluss corner) after rebuilding the table, but only if we reuse items.
+ QFETCH(bool, reuseItems);
LOAD_TABLEVIEW("plaintableview.qml");
auto model = TestModelAsVariant(100, 100);
tableView->setModel(model);
+ tableView->setReuseItems(reuseItems);
WAIT_UNTIL_POLISHED;
- QSize visibleTableSize = tableViewPrivate->loadedTable.size();
- int expectedPoolSize = visibleTableSize.height() + visibleTableSize.width() + 1;
- QCOMPARE(tableViewPrivate->tableModel->poolSize(), expectedPoolSize);
+ if (reuseItems) {
+ QSize visibleTableSize = tableViewPrivate->loadedTable.size();
+ int expectedPoolSize = visibleTableSize.height() + visibleTableSize.width() + 1;
+ QCOMPARE(tableViewPrivate->tableModel->poolSize(), expectedPoolSize);
+ } else {
+ QCOMPARE(tableViewPrivate->tableModel->poolSize(), 0);
+ }
}
void tst_QQuickTableView::checkZeroSizedDelegate()