From 7298c92200c1e5fbdf45ed28643a29330fd36b64 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 12 Mar 2015 23:02:04 +0100 Subject: [PATCH] KSPM: Fix setting selection state after source reset. This ammends the parent commit. --- autotests/kselectionproxymodeltest.cpp | 16 +++++++++++++--- src/kselectionproxymodel.cpp | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/autotests/kselectionproxymodeltest.cpp b/autotests/kselectionproxymodeltest.cpp index 3464c00..015aa86 100644 --- a/autotests/kselectionproxymodeltest.cpp +++ b/autotests/kselectionproxymodeltest.cpp @@ -20,12 +20,13 @@ private Q_SLOTS: void KSelectionProxyModelTest::selectOnSourceReset() { - QStringListModel strings({ + QStringList days = { "Monday", "Tuesday", "Wednesday", "Thursday" - }); + }; + QStringListModel strings(days); QItemSelectionModel selectionModel(&strings); connect(&strings, &QAbstractItemModel::modelReset, [&] { @@ -39,7 +40,16 @@ void KSelectionProxyModelTest::selectOnSourceReset() selectionModel.select(QItemSelection(strings.index(0, 0), strings.index(2, 0)), QItemSelectionModel::Select); - strings.setStringList({ "One", "Two", "Three", "Four" }); + QCOMPARE(proxy.rowCount(), 3); + for (int i = 0; i < 3; ++i) + QCOMPARE(proxy.index(i, 0).data().toString(), days.at(i)); + + QStringList numbers = { "One", "Two", "Three", "Four" }; + strings.setStringList(numbers); + + QCOMPARE(proxy.rowCount(), 3); + for (int i = 0; i < 3; ++i) + QCOMPARE(proxy.index(i, 0).data().toString(), numbers.at(i)); QVERIFY(selectionModel.selection().contains(strings.index(0, 0))); QVERIFY(selectionModel.selection().contains(strings.index(1, 0))); diff --git a/src/kselectionproxymodel.cpp b/src/kselectionproxymodel.cpp index 42ba106..5e1a2d1 100644 --- a/src/kselectionproxymodel.cpp +++ b/src/kselectionproxymodel.cpp @@ -905,6 +905,7 @@ void KSelectionProxyModelPrivate::sourceModelReset() resetInternalData(); m_sourceModelResetting = false; m_resetting = false; + selectionChanged(m_selectionModel->selection(), QItemSelection()); q->endResetModel(); }