From a85d15259ce2ce9371ad832bdd7becf256362c20 Mon Sep 17 00:00:00 2001 From: Jani Honkonen Date: Thu, 7 Jun 2012 16:39:21 +0200 Subject: Fix QListView::scrollTo() when there are hidden rows This is a cherry-pick of b0601630dd0ddabfaa3b97d042ee02b981d95988 from February QListView does not consider hidden rows when scrolling to an item. If there are hidden rows (or columns) before the selected item then the visual index of an item is not the same as the row index from the model. So scrolling will be off by the number of hidden rows before the selected item. Added a autotest for this also. Task-number: QTBUG-21115 Change-Id: I01b097bce7f163cdb480a71b763c060cc006fdc7 Reviewed-by: Stephen Kelly --- src/widgets/itemviews/qlistview.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp index 315960648b..82792d5fef 100644 --- a/src/widgets/itemviews/qlistview.cpp +++ b/src/widgets/itemviews/qlistview.cpp @@ -3185,7 +3185,12 @@ int QListView::visualIndex(const QModelIndex &index) const Q_D(const QListView); d->executePostedLayout(); QListViewItem itm = d->indexToListViewItem(index); - return d->commonListView->itemIndex(itm); + int visualIndex = d->commonListView->itemIndex(itm); + for (int row = 0; row <= index.row() && visualIndex >= 0; row++) { + if (d->isHidden(row)) + visualIndex--; + } + return visualIndex; } QT_END_NAMESPACE -- cgit v1.2.3