diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2020-05-02 23:03:39 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2020-05-05 18:58:23 +0200 |
commit | 0bed456f47d9c13d0158ee336d4a13bcf3a3bda3 (patch) | |
tree | aeb9e43b6ff34c30cf0b5eeceff591f6329208ed /src/gui/itemmodels | |
parent | a1947aeffe158a0ea7de3ced1bf8d6a4719a27ef (diff) |
QStandardItemModel: port a local QSet to QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also
transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or
at least reduce, memory allocations.
Change-Id: I59242287debfd1e41c663aa2b88d0d3ea44f43fb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/gui/itemmodels')
-rw-r--r-- | src/gui/itemmodels/qstandarditemmodel.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp index bc76d0ea60..9bb9d57c4e 100644 --- a/src/gui/itemmodels/qstandarditemmodel.cpp +++ b/src/gui/itemmodels/qstandarditemmodel.cpp @@ -48,7 +48,7 @@ #include <QtCore/qstringlist.h> #include <QtCore/qbitarray.h> #include <QtCore/qmimedata.h> - +#include <private/qduplicatetracker_p.h> #include <private/qstandarditemmodel_p.h> #include <qdebug.h> #include <algorithm> @@ -3114,12 +3114,11 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const //remove duplicates childrens { - QSet<QStandardItem *> seen; + QDuplicateTracker<QStandardItem *> seen; while (!stack.isEmpty()) { QStandardItem *itm = stack.pop(); - if (seen.contains(itm)) + if (seen.hasSeen(itm)) continue; - seen.insert(itm); const QVector<QStandardItem*> &childList = itm->d_func()->children; for (int i = 0; i < childList.count(); ++i) { |