Fix removing columns when QSortFilterProxyModel has not been sorted yet

Fixes: QTBUG-91788
Pick-to: 6.1 6.0 5.15
Change-Id: Iddcafd3171f0f3703b94893a32b4ccaaeea9e713
Reviewed-by: David Faure <david.faure@kdab.com>
This commit is contained in:
Joni Poikelin 2021-03-15 12:54:45 +02:00
parent 3dcdd89dd1
commit e287582cba
2 changed files with 18 additions and 1 deletions

View File

@ -1714,7 +1714,10 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
source_sort_column = -1;
}
proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column();
if (source_sort_column >= 0)
proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column();
else
proxy_sort_column = -1;
}
void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeMoved(

View File

@ -116,6 +116,7 @@ private Q_SLOTS:
void shouldPropagateDropBetweenItemsAtModelBoundary();
void shouldPropagateDropAfterLastRow_data();
void shouldPropagateDropAfterLastRow();
void qtbug91788();
private:
QStandardItemModel mod;
@ -829,6 +830,19 @@ void tst_QConcatenateTablesProxyModel::shouldPropagateDropAfterLastRow()
}
void tst_QConcatenateTablesProxyModel::qtbug91788()
{
QConcatenateTablesProxyModel proxyConcat;
QStringList strList{QString("one"),QString("two")};
QStringListModel strListModelA(strList);
QSortFilterProxyModel proxyFilter;
proxyFilter.setSourceModel(&proxyConcat);
proxyConcat.addSourceModel(&strListModelA);
proxyConcat.removeSourceModel(&strListModelA); // This should not assert
QCOMPARE(proxyConcat.columnCount(), 0);
}
QTEST_GUILESS_MAIN(tst_QConcatenateTablesProxyModel)
#include "tst_qconcatenatetablesproxymodel.moc"