From 3ddffd2d8b619863930854705ca5577c0389d65f Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Fri, 28 Aug 2020 20:56:47 +0200 Subject: QTable/TreeView: fix sortByColumn() when view is already sorted When the view was already sorted by the column and order given to sortByColumn(), a resort was not triggered which is a regression since d0f909f8dbdd8594b0d950822f0e7ab8728da513. Therefore don't rely on sortIndicatorChanged() in this case and trigger an explicit sort as it's done when no user-triggered sorting is enabled Fixes: QTBUG-86268 Change-Id: I3ec30ab81f304d5a19cef6d67b8a81c21b4a112d Pick-to: 5.15 Reviewed-by: Richard Moe Gustavsen --- src/widgets/itemviews/qtreeview.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/widgets/itemviews/qtreeview.cpp') diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index 863a26db4b..ccfeffeda3 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -2629,11 +2629,11 @@ void QTreeView::sortByColumn(int column, Qt::SortOrder order) Q_D(QTreeView); if (column < -1) return; - // If sorting is enabled it will emit a signal connected to - // _q_sortIndicatorChanged, which then actually sorts d->header->setSortIndicator(column, order); - // If sorting is not enabled, force to sort now - if (!d->sortingEnabled) + // If sorting is not enabled or has the same order as before, force to sort now + // else sorting will be trigger through sortIndicatorChanged() + if (!d->sortingEnabled || + (d->header->sortIndicatorSection() == column && d->header->sortIndicatorOrder() == order)) d->model->sort(column, order); } -- cgit v1.2.3