diff options
Diffstat (limited to 'src/widgets/itemviews')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 11 | ||||
-rw-r--r-- | src/widgets/itemviews/qabstractitemview_p.h | 3 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 42e0cc7585..4768c58d1d 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -2604,12 +2604,11 @@ QModelIndexList QAbstractItemView::selectedIndexes() const QModelIndexList indexes; if (d->selectionModel) { indexes = d->selectionModel->selectedIndexes(); - QList<QModelIndex>::iterator it = indexes.begin(); - while (it != indexes.end()) - if (isIndexHidden(*it)) - it = indexes.erase(it); - else - ++it; + auto isHidden = [this](const QModelIndex &idx) { + return isIndexHidden(idx); + }; + const auto end = indexes.end(); + indexes.erase(std::remove_if(indexes.begin(), end, isHidden), end); } return indexes; } diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h index a3af79abcb..60ae1559b1 100644 --- a/src/widgets/itemviews/qabstractitemview_p.h +++ b/src/widgets/itemviews/qabstractitemview_p.h @@ -277,7 +277,8 @@ public: const QEditorInfo &editorForIndex(const QModelIndex &index) const; inline bool hasEditor(const QModelIndex &index) const { - return indexEditorHash.find(index) != indexEditorHash.constEnd(); + // Search's implicit cast (QModelIndex to QPersistentModelIndex) is slow; use cheap pre-test to avoid when we can. + return !indexEditorHash.isEmpty() && indexEditorHash.contains(index); } QModelIndex indexForEditor(QWidget *editor) const; |