Fix removing columns when QSortFilterProxyModel has not been sorted yet

Fixes: QTBUG-91788
Change-Id: Iddcafd3171f0f3703b94893a32b4ccaaeea9e713
Reviewed-by: David Faure <david.faure@kdab.com>
(cherry picked from commit e287582cba74ddcfc67f83647e72c0b23bd99c36)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Joni Poikelin 2021-03-15 12:54:45 +02:00 committed by Qt Cherry-pick Bot
parent 01d50715e0
commit 6bd89d122e
2 changed files with 18 additions and 1 deletions

View File

@ -1713,7 +1713,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"