From 4ff83462dfd02701fec0a82e5758dd136b7797e9 Mon Sep 17 00:00:00 2001 From: craig Date: Mon, 13 Feb 2012 21:04:38 +0000 Subject: [PATCH] Fix crash when navigating listviews. --- ChangeLog | 1 + widgets/itemview.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 63d7bd816..67e265920 100644 --- a/ChangeLog +++ b/ChangeLog @@ -40,6 +40,7 @@ 31. Use current style for position slider. 32. Fix some toolbutton clipping with some styles. 33. Fix amarok import script. +34. Fix crash when navigating listviews. 0.3.0 ----- diff --git a/widgets/itemview.cpp b/widgets/itemview.cpp index d84923eb0..2ea079b90 100644 --- a/widgets/itemview.cpp +++ b/widgets/itemview.cpp @@ -619,7 +619,15 @@ void ItemView::backActivated() setLevel(currentLevel-1); itemModel->setRootIndex(listView->rootIndex().parent()); listView->setRootIndex(listView->rootIndex().parent()); - listView->scrollTo(prevTopIndex, QAbstractItemView::PositionAtTop); + + if (qobject_cast(listView->model())) { + QModelIndex idx=static_cast(listView->model())->mapFromSource(prevTopIndex); + if (idx.isValid()) { + listView->scrollTo(idx, QAbstractItemView::PositionAtTop); + } + } else { + listView->scrollTo(prevTopIndex, QAbstractItemView::PositionAtTop); + } } QAction * ItemView::getAction(const QModelIndex &index) @@ -681,6 +689,9 @@ void ItemView::itemActivated(const QModelIndex &index) treeView->setExpanded(index, !treeView->isExpanded(index)); } else if (index.isValid() && index.child(0, 0).isValid()) { prevTopIndex=listView->indexAt(QPoint(0, 0)); + if (qobject_cast(listView->model())) { + prevTopIndex=static_cast(listView->model())->mapToSource(prevTopIndex); + } setLevel(currentLevel+1, index.child(0, 0).child(0, 0).isValid()); #ifdef ENABLE_KDE_SUPPORT listSearch->setPlaceholderText(i18n("Search %1...", index.data(Qt::DisplayRole).toString()));