diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 6de6ff56e..2938e9043 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -383,10 +383,6 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] - previewList.trigger 'core:move-up' - expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' - expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] - previewList.trigger 'core:move-down' expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[1] @@ -399,7 +395,7 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[1] - _.times previewList.getOperations().length, -> previewList.trigger 'core:move-down' + _.times previewList.getOperations().length - 2, -> previewList.trigger 'core:move-down' expect(previewList.find("li.operation:last")).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) @@ -408,15 +404,28 @@ describe "CommandPanel", -> _.times previewList.getOperations().length, -> previewList.trigger 'core:move-up' + it "wraps around when the list is at the beginning or end", -> + rootView.attachToDom() + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] + + previewList.trigger 'core:move-up' + expect(previewList.find('li.operation:last')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) + + previewList.trigger 'core:move-down' + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] + it "doesn't bubble up the event and the command panel text doesn't change", -> rootView.attachToDom() commandPanel.miniEditor.setText "command" previewList.focus() previewList.trigger 'core:move-up' - expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(previewList.find('li.operation:last')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' previewList.trigger 'core:move-down' - expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' describe "when core:confirm is triggered on the preview list", -> diff --git a/src/packages/command-panel/src/preview-list.coffee b/src/packages/command-panel/src/preview-list.coffee index b8030de31..d64308309 100644 --- a/src/packages/command-panel/src/preview-list.coffee +++ b/src/packages/command-panel/src/preview-list.coffee @@ -56,10 +56,16 @@ class PreviewList extends ScrollView lineNumbers.width(maxWidth) selectNextOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex + 1) + if @selectedOperationIndex is @operations.length - 1 + @setSelectedOperationIndex(0) + else + @setSelectedOperationIndex(@selectedOperationIndex + 1) selectPreviousOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex - 1) + if @selectedOperationIndex is 0 + @setSelectedOperationIndex(@operations.length - 1) + else + @setSelectedOperationIndex(@selectedOperationIndex - 1) setSelectedOperationIndex: (index) -> index = Math.max(0, index)