diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-08-28 20:56:47 +0200 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-09-02 22:44:30 +0200 |
commit | 3ddffd2d8b619863930854705ca5577c0389d65f (patch) | |
tree | 6e26a6663565a1e6abf5e11d3089b5c7a2188abf /src/widgets | |
parent | 26b38510ce5a04ba564c3c281f7587d2fa034d4e (diff) | |
download | qtbase-3ddffd2d8b619863930854705ca5577c0389d65f.tar.gz |
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 <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qtableview.cpp | 8 | ||||
-rw-r--r-- | src/widgets/itemviews/qtreeview.cpp | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp index 30f2eba912..cf927ef30d 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -3238,11 +3238,11 @@ void QTableView::sortByColumn(int column, Qt::SortOrder order) Q_D(QTableView); if (column < -1) return; - // If sorting is enabled it will emit a signal connected to - // _q_sortIndicatorChanged, which then actually sorts d->horizontalHeader->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->horizontalHeader->sortIndicatorSection() == column && d->horizontalHeader->sortIndicatorOrder() == order)) d->model->sort(column, order); } 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); } |