qt5base-lts/tests/auto/widgets
Wladimir Leuschner cf6bccbcf5 Ensure stable sort in QListWidget
QlistWidgets with sorting enabled do not sort stable. A re-sort is
triggered when any Qt::ItemDataRole is changed and not only when
Qt::DisplayRole is changed. Due to an unstable optimization, the changed
element gets inserted at the beginning of their respective "equivalence
group".

This patch disables the optimization and ensures stable sorting
with std::stable_sort. Sorting is only performed, if the subset of
changed items in the range [begin, end] is not already sorted in the
whole list. For this purpose, it is assumed that the list has already been sorted before begin and after end. This assumption minimizes the subset to check.

Limits / side effect:
The patch focuses on the most common use case, which is a single item being changed. Replacing the optimization by std:stable_sort can potentially slow down the sorting performance of large data sets.

Task-number: QTBUG-113123
Pick-to: 6.5 6.6
Change-Id: Ib2bd08f21422eb7d6aeff7cdd6a91be7114ebcba
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-09-26 16:45:11 +00:00
..
dialogs Dialogs: clean up native dialogs when object gets destroyed 2023-09-06 23:12:33 +02:00
effects Stabilize tst_QGraphicsEffect::draw() 2023-08-25 09:04:37 +02:00
graphicsview QtWidgets tests: port remaining users away from Q_FOREACH 2023-08-14 23:11:54 +03:00
itemviews Ensure stable sort in QListWidget 2023-09-26 16:45:11 +00:00
kernel QtWidgets tests: port remaining users away from Q_FOREACH 2023-08-14 23:11:54 +03:00
styles Reset palette resolve mask in windows vista style 2023-09-05 10:59:00 +02:00
util Remove redundant QPair includes 2023-09-06 17:24:40 +00:00
widgets QDockWidget: ignore close event if DockWidgetClosable is not set 2023-09-21 18:36:06 +02:00
CMakeLists.txt tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00