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:
parent
e2f57d59d8
commit
1d859ef805
@ -4196,6 +4196,10 @@ const QEditorInfo & QAbstractItemViewPrivate::editorForIndex(const QModelIndex &
|
|||||||
{
|
{
|
||||||
static QEditorInfo nullInfo;
|
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);
|
QIndexEditorHash::const_iterator it = indexEditorHash.find(index);
|
||||||
if (it == indexEditorHash.end())
|
if (it == indexEditorHash.end())
|
||||||
return nullInfo;
|
return nullInfo;
|
||||||
@ -4205,6 +4209,10 @@ const QEditorInfo & QAbstractItemViewPrivate::editorForIndex(const QModelIndex &
|
|||||||
|
|
||||||
QModelIndex QAbstractItemViewPrivate::indexForEditor(QWidget *editor) const
|
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);
|
QEditorIndexHash::const_iterator it = editorIndexHash.find(editor);
|
||||||
if (it == editorIndexHash.end())
|
if (it == editorIndexHash.end())
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
|
Loading…
Reference in New Issue
Block a user