summaryrefslogtreecommitdiffstats
path: root/src/corelib/itemmodels
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/itemmodels')
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index 7327b5deee..418c425810 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -39,6 +39,7 @@
#include "qitemselectionmodel.h"
#include <private/qitemselectionmodel_p.h>
+#include <private/qduplicatetracker_p.h>
#include <qdebug.h>
#include <algorithm>
@@ -1738,6 +1739,8 @@ size_t qHash(const RowOrColumnDefinition &key, size_t seed = 0) noexcept
return seed;
}
+QT_SPECIALIZE_STD_HASH_TO_CALL_QHASH_BY_CREF(RowOrColumnDefinition)
+
/*!
\since 4.2
Returns the indexes in the given \a column for the rows where all columns are selected.
@@ -1749,16 +1752,14 @@ QModelIndexList QItemSelectionModel::selectedRows(int column) const
{
QModelIndexList indexes;
- QSet<RowOrColumnDefinition> rowsSeen;
+ QDuplicateTracker<RowOrColumnDefinition> rowsSeen;
const QItemSelection ranges = selection();
for (int i = 0; i < ranges.count(); ++i) {
const QItemSelectionRange &range = ranges.at(i);
QModelIndex parent = range.parent();
for (int row = range.top(); row <= range.bottom(); row++) {
- RowOrColumnDefinition rowDef = {parent, row};
- if (!rowsSeen.contains(rowDef)) {
- rowsSeen << rowDef;
+ if (!rowsSeen.hasSeen({parent, row})) {
if (isRowSelected(row, parent)) {
indexes.append(model()->index(row, column, parent));
}
@@ -1780,16 +1781,14 @@ QModelIndexList QItemSelectionModel::selectedColumns(int row) const
{
QModelIndexList indexes;
- QSet<RowOrColumnDefinition> columnsSeen;
+ QDuplicateTracker<RowOrColumnDefinition> columnsSeen;
const QItemSelection ranges = selection();
for (int i = 0; i < ranges.count(); ++i) {
const QItemSelectionRange &range = ranges.at(i);
QModelIndex parent = range.parent();
for (int column = range.left(); column <= range.right(); column++) {
- RowOrColumnDefinition columnDef = {parent, column};
- if (!columnsSeen.contains(columnDef)) {
- columnsSeen << columnDef;
+ if (!columnsSeen.hasSeen({parent, column})) {
if (isColumnSelected(column, parent)) {
indexes.append(model()->index(row, column, parent));
}