diff options
author | David Faure <david.faure@kdab.com> | 2022-02-23 00:45:27 +0100 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2022-02-28 09:43:37 +0100 |
commit | 74a4d88e9a002ec30b4bb7bbaf7776b458ae15db (patch) | |
tree | 78230b6592c5cff16f75fa36a673d27a976cc841 /cmake/QtBuild.cmake | |
parent | af05f278ed236e0f699e0af79524cf55054ba49f (diff) |
QAbstractItemModel: fix persistent index corruption when moving columns
QHeaderView creates persistent indexes in
_q_sectionsAboutToBeChanged(), called by the slot connected to
rowsAboutToBeMoved/columnsAboutToBeMoved.
In the case of rows, QAbstractItemModel emits the signal *before*
preparing to update persistent indexes in itemsAboutToBeMoved(),
so it can see the ones newly created by QHeaderView, all is well.
In the case of columns, the emit was done *after* calling
itemsAboutToBeMoved(), so the additional persistent indexes created by
QHeaderView were ignored, and in endMoveRows() we could end up with:
ASSERT failure in QPersistentModelIndex::~QPersistentModelIndex: "persistent model indexes corrupted"
This bug has been there since the very beginning of beginMoveColumns(),
but was undetected because moving columns in a model is pretty rare
(in my case there's a QTransposeProxyModel that turns columns into
rows in the underlying model, and a proxy that handles dropMimeData...)
Pick-to: 6.3 6.2 5.15
Change-Id: I74bad137594019a04c2a19c2abb351ff3065c25a
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'cmake/QtBuild.cmake')
0 files changed, 0 insertions, 0 deletions