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 @@ -59,6 +59,8 @@ property alias scrollDown: gridView.scrollDown property alias hoveredItem: gridView.hoveredItem property var history: [] + property var positionHistory: [] + property bool goingBack: false property Item backButton: null property var dialog: null property Item editor: null @@ -190,11 +192,15 @@ function doCd(row) { history.push(url); + positionHistory.push({"index": gridView.currentIndex, "contentY": gridView.contentY}); updateHistory(); dir.cd(row); + gridView.currentIndex = -1; } function doBack() { + goingBack = true; + gridView.currentIndex = -1; url = history.pop(); updateHistory(); } @@ -1079,6 +1085,7 @@ onUrlChanged: { history = []; + positionHistory = []; updateHistory(); } } @@ -1106,6 +1113,12 @@ onListingCompleted: { if (!gridView.model && plasmoid.expanded) { gridView.model = positioner; + } else if (goingBack) { + goingBack = false; + var previousPosition = positionHistory.pop(); + gridView.currentIndex = previousPosition.index; + setSelected(positioner.map(currentIndex)); + gridView.contentY = previousPosition.contentY; } } diff --git a/containments/desktop/package/contents/ui/FolderViewLayer.qml b/containments/desktop/package/contents/ui/FolderViewLayer.qml --- a/containments/desktop/package/contents/ui/FolderViewLayer.qml +++ b/containments/desktop/package/contents/ui/FolderViewLayer.qml @@ -70,6 +70,7 @@ return plasmoid.configuration.url; }); folderView.history = []; + folderView.positionHistory = []; folderView.updateHistory(); } }