diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-01-05 14:07:37 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-01-06 12:27:37 +0000 |
commit | 4511075fb40de3ecdb39dc8345b1df0c547d781c (patch) | |
tree | 5833d7732b4062ed5eb5cadec4eeb89782cf57eb /src/widgets/itemviews | |
parent | e7174533e733f2ef4d5278c4619628cf87907b5b (diff) |
Optimize QListViewPrivate::draggablePaintPairs()
Instead of converting a QVector to a QList to a QSet just to
be able to look up some indexes, take the original QVector,
sort it, and use std::binary_search().
Change-Id: If56e9371972b9aaebb033a8a499be306163266e2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qlistview.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 7cd8e890db..985b347bbc 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -650,9 +650,10 @@ QItemViewPaintPairs QListViewPrivate::draggablePaintPairs(const QModelIndexList QRect &rect = *r; const QRect viewportRect = viewport->rect(); QItemViewPaintPairs ret; - const QSet<QModelIndex> visibleIndexes = intersectingSet(viewportRect.translated(q->horizontalOffset(), q->verticalOffset())).toList().toSet(); + QVector<QModelIndex> visibleIndexes = intersectingSet(viewportRect.translated(q->horizontalOffset(), q->verticalOffset())); + std::sort(visibleIndexes.begin(), visibleIndexes.end()); for (const auto &index : indexes) { - if (visibleIndexes.contains(index)) { + if (std::binary_search(visibleIndexes.cbegin(), visibleIndexes.cend(), index)) { const QRect current = q->visualRect(index); QItemViewPaintPair p = { current, index }; ret += p; |