diff --git a/containments/desktop/package/contents/ui/FolderView.qml b/containments/desktop/package/contents/ui/FolderView.qml --- a/containments/desktop/package/contents/ui/FolderView.qml +++ b/containments/desktop/package/contents/ui/FolderView.qml @@ -775,6 +775,10 @@ } Keys.onUpPressed: { + if (root.useListViewMode && currentIndex == -1) { + currentIndex = 1; + } + if (positioner.enabled) { var newIndex = positioner.nearestItem(currentIndex, FolderTools.effectiveNavDirection(gridView.flow, gridView.effectiveLayoutDirection, Qt.UpArrow)); @@ -789,7 +793,11 @@ moveCurrentIndexUp(); if (oldIndex == currentIndex) { - return; + if (gridView.count > 1 && root.useListViewMode) { + currentIndex = gridView.count - 1; + } else { + return; + } } updateSelection(event.modifiers); @@ -811,7 +819,11 @@ moveCurrentIndexDown(); if (oldIndex == currentIndex) { - return; + if (gridView.count > 1 && root.useListViewMode) { + currentIndex = 0; + } else { + return; + } } updateSelection(event.modifiers); @@ -839,6 +851,14 @@ gridView.iconSize = gridView.makeIconSize(); } } + + Connections { + target: dir + + onRequestResetIndex: { + currentIndex = -1; + } + } } } diff --git a/containments/desktop/plugins/folder/foldermodel.h b/containments/desktop/plugins/folder/foldermodel.h --- a/containments/desktop/plugins/folder/foldermodel.h +++ b/containments/desktop/plugins/folder/foldermodel.h @@ -224,6 +224,7 @@ void filterPatternChanged() const; void filterMimeTypesChanged() const; void requestRename() const; + void requestResetIndex() const; void move(int x, int y, QList urls); protected: diff --git a/containments/desktop/plugins/folder/foldermodel.cpp b/containments/desktop/plugins/folder/foldermodel.cpp --- a/containments/desktop/plugins/folder/foldermodel.cpp +++ b/containments/desktop/plugins/folder/foldermodel.cpp @@ -187,6 +187,7 @@ emit urlChanged(); emit resolvedUrlChanged(); + emit requestResetIndex(); m_errorString.clear(); emit errorStringChanged();