diff options
author | Thorbjørn Martsum <tmartsum@gmail.com> | 2013-06-18 10:06:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-21 18:59:37 +0200 |
commit | 7ddf1b14ecc7e56ddcc78cc7057881d7925d20ff (patch) | |
tree | 394efa74f36bd6956428ec8f76a7e1ca11a3d7aa /src/widgets/itemviews/qtreewidget.cpp | |
parent | 6347afbfdda62d243ef1751437a3b0670a7879a8 (diff) |
QTreeWidget - iterator fix in QTreeModel::ensureSorted
We can not trust the iterator when we do erase. This patch
makes an index while we do a takeAt and then we restore
the iterator from that index.
This both ensures that we can merge an iterator check
and ensures consistent behavior.
Change-Id: Icbe67051cb055d24541475e826109212eba9dd30
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/widgets/itemviews/qtreewidget.cpp')
-rw-r--r-- | src/widgets/itemviews/qtreewidget.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp index f72abd20ab..2de7830c6a 100644 --- a/src/widgets/itemviews/qtreewidget.cpp +++ b/src/widgets/itemviews/qtreewidget.cpp @@ -623,7 +623,13 @@ void QTreeModel::ensureSorted(int column, Qt::SortOrder order, for (int i = 0; i < count; ++i) { int oldRow = sorting.at(i).second; + + int tmpitepos = lit - lst.begin(); QTreeWidgetItem *item = lst.takeAt(oldRow); + if (tmpitepos > lst.size()) + --tmpitepos; + lit = lst.begin() + tmpitepos; + lit = sortedInsertionIterator(lit, lst.end(), order, item); int newRow = qMax(lit - lst.begin(), 0); |