diff --git a/autotests/kdescendantsproxymodeltest.cpp b/autotests/kdescendantsproxymodeltest.cpp index 67c0fba..6d7cd35 100644 --- a/autotests/kdescendantsproxymodeltest.cpp +++ b/autotests/kdescendantsproxymodeltest.cpp @@ -77,7 +77,6 @@ void tst_KDescendantProxyModel::testResetModelContent() << "SecondModel1-1"; QCOMPARE(proxy.rowCount(), results.count()); for (int i = 0 ; i < proxy.rowCount() ; i++) { - QEXPECT_FAIL("", "KDescendantProxyModel broken in setSourceModel", Continue); QCOMPARE(proxy.index(i, 0).data(Qt::DisplayRole).toString(), results[i]); } } diff --git a/src/kdescendantsproxymodel.cpp b/src/kdescendantsproxymodel.cpp index 477cd96..d3aabf8 100644 --- a/src/kdescendantsproxymodel.cpp +++ b/src/kdescendantsproxymodel.cpp @@ -246,6 +246,8 @@ QString KDescendantsProxyModel::ancestorSeparator() const void KDescendantsProxyModel::setSourceModel(QAbstractItemModel *_sourceModel) { + Q_D(KDescendantsProxyModel); + beginResetModel(); static const char *const modelSignals[] = { @@ -291,6 +293,11 @@ void KDescendantsProxyModel::setSourceModel(QAbstractItemModel *_sourceModel) } } + resetInternalData(); + if (_sourceModel && _sourceModel->hasChildren()) { + d->synchronousMappingRefresh(); + } + endResetModel(); }