diff -r b72c6db6890b -r 5dc02b23752f src/gui/itemviews/qtreewidget.cpp --- a/src/gui/itemviews/qtreewidget.cpp Wed Jun 23 19:07:03 2010 +0300 +++ b/src/gui/itemviews/qtreewidget.cpp Tue Jul 06 15:10:48 2010 +0300 @@ -3039,10 +3039,14 @@ Q_D(const QTreeWidget); QModelIndexList indexes = selectionModel()->selectedIndexes(); QList items; + items.reserve(indexes.count()); + QSet seen; + seen.reserve(indexes.count()); for (int i = 0; i < indexes.count(); ++i) { QTreeWidgetItem *item = d->item(indexes.at(i)); - if (isItemHidden(item) || items.contains(item)) // ### slow, optimize later + if (isItemHidden(item) || seen.contains(item)) continue; + seen.insert(item); items.append(item); } return items;