Core: Fix item view find

...when there is only one matching item and we are starting
search from there.

Change-Id: Icfffd37d9330c83058fb81356762e72b183f24e8
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Christian Stenger
2023-05-12 11:50:51 +02:00
parent 95d21f3966
commit 8121575067

View File

@@ -203,11 +203,18 @@ IFindSupport::Result ItemViewFind::find(const QString &searchTxt,
index, d->m_role).toString();
if (d->m_view->model()->flags(index) & Qt::ItemIsSelectable
&& (index.row() != currentRow || index.parent() != currentIndex.parent())
&& text.indexOf(searchExpr) != -1)
&& text.indexOf(searchExpr) != -1) {
resultIndex = index;
break;
}
}
index = followingIndex(index, backward, &stepWrapped);
} while (!resultIndex.isValid() && index.isValid() && index != currentIndex);
if (index == currentIndex) { // we're back where we started
if (d->m_view->model()->data(index, d->m_role).toString().indexOf(searchExpr) != -1)
resultIndex = index;
break;
}
} while (index.isValid());
if (resultIndex.isValid()) {
d->m_view->setCurrentIndex(resultIndex);