diff options
-rw-r--r-- | src/quick/items/qquicktableview.cpp | 6 | ||||
-rw-r--r-- | tests/auto/quick/qquicktableview/tst_qquicktableview.cpp | 23 |
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() |