diff --git a/spec/extensions/tree-view-spec.coffee b/spec/extensions/tree-view-spec.coffee index 5ec442f46..2b0875ce2 100644 --- a/spec/extensions/tree-view-spec.coffee +++ b/spec/extensions/tree-view-spec.coffee @@ -197,6 +197,16 @@ describe "TreeView", -> treeView.trigger 'move-up' expect(treeView.root.find('.entry:last')).toHaveClass 'selected' + describe "when there is an expanded directory before the currently selected entry", -> + it "selects the last entry in the expanded directory", -> + lastDir = treeView.root.find('.directory:last').view() + fileAfterDir = lastDir.next().view() + lastDir.expand() + fileAfterDir.click() + + treeView.trigger 'move-up' + expect(lastDir.find('.entry:last')).toHaveClass 'selected' + describe "when there is an entry before the currently selected entry", -> it "selects the previous entry", -> lastEntry = treeView.root.find('.entry:last') @@ -212,7 +222,6 @@ describe "TreeView", -> subdir.expand() subdir.find('> .entries > .entry:first').click() - treeView.trigger 'move-up' expect(subdir).toHaveClass 'selected' diff --git a/src/extensions/tree-view/tree-view.coffee b/src/extensions/tree-view/tree-view.coffee index 09dd79b21..aa6d61b12 100644 --- a/src/extensions/tree-view/tree-view.coffee +++ b/src/extensions/tree-view/tree-view.coffee @@ -85,8 +85,11 @@ class TreeView extends View moveUp: -> selectedEntry = @selectedEntry() if selectedEntry - return if @selectEntry(selectedEntry.prev()) - return if @selectEntry(selectedEntry.parents('.directory').first()) + if previousEntry = @selectEntry(selectedEntry.prev()) + if previousEntry.is('.expanded.directory') + @selectEntry(previousEntry.find('.entry:last')) + else + @selectEntry(selectedEntry.parents('.directory').first()) else @selectEntry(@find('.entry').last())