AbstractItemView editorForIndex/indexForEditor speedup

Frequent calls to editorForIndex/indexForEditor are very slow because of an implicit
conversion from QModelIndex to QPersistentModelIndex.
This fix allows to avoid unnecessary conversions when there are no open
editors (most common case)

Change-Id: Ic072880c9f33a43a20b2a61a42c3ba215c5c33cb
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
This commit is contained in:
ABBAPOH 2012-06-09 16:22:50 +04:00 committed by Qt by Nokia
parent e2f57d59d8
commit 1d859ef805

View File

@ -4196,6 +4196,10 @@ const QEditorInfo & QAbstractItemViewPrivate::editorForIndex(const QModelIndex &
{
static QEditorInfo nullInfo;
// do not try to search to avoid slow implicit cast from QModelIndex to QPersistentModelIndex
if (indexEditorHash.isEmpty())
return nullInfo;
QIndexEditorHash::const_iterator it = indexEditorHash.find(index);
if (it == indexEditorHash.end())
return nullInfo;
@ -4205,6 +4209,10 @@ const QEditorInfo & QAbstractItemViewPrivate::editorForIndex(const QModelIndex &
QModelIndex QAbstractItemViewPrivate::indexForEditor(QWidget *editor) const
{
// do not try to search to avoid slow implicit cast from QModelIndex to QPersistentModelIndex
if (indexEditorHash.isEmpty())
return QModelIndex();
QEditorIndexHash::const_iterator it = editorIndexHash.find(editor);
if (it == editorIndexHash.end())
return QModelIndex();