From acf5aeb884bf36dd979755494bcf4f1ee3cfcb22 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 28 Dec 2012 13:29:32 -0800 Subject: [PATCH] Cancel select list when an empty selection is confirmed --- spec/app/select-list-spec.coffee | 8 ++++++++ src/app/select-list.coffee | 5 ++++- src/packages/autocomplete/spec/autocomplete-spec.coffee | 3 +-- src/packages/autocomplete/src/autocomplete.coffee | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/spec/app/select-list-spec.coffee b/spec/app/select-list-spec.coffee index b604e529e..01ffeb445 100644 --- a/spec/app/select-list-spec.coffee +++ b/spec/app/select-list-spec.coffee @@ -121,6 +121,14 @@ describe "SelectList", -> miniEditor.trigger 'core:confirm' expect(selectList.confirmed).not.toHaveBeenCalled() + it "does trigger the cancelled hook", -> + miniEditor.insertText("i will never match anything") + window.advanceClock(selectList.inputThrottle) + + expect(list.find('li')).not.toExist() + miniEditor.trigger 'core:confirm' + expect(selectList.cancelled).toHaveBeenCalled() + describe "when a list item is clicked", -> it "selects the item on mousedown and confirms it on mouseup", -> item = list.find('li:eq(1)') diff --git a/src/app/select-list.coffee b/src/app/select-list.coffee index 7b9c43dfd..924933698 100644 --- a/src/app/select-list.coffee +++ b/src/app/select-list.coffee @@ -117,7 +117,10 @@ class SelectList extends View confirmSelection: -> element = @getSelectedElement() - @confirmed(element) if element? + if element? + @confirmed(element) + else + @cancel() cancel: -> @list.empty() diff --git a/src/packages/autocomplete/spec/autocomplete-spec.coffee b/src/packages/autocomplete/spec/autocomplete-spec.coffee index 8d4f5d10c..21ced79ca 100644 --- a/src/packages/autocomplete/spec/autocomplete-spec.coffee +++ b/src/packages/autocomplete/spec/autocomplete-spec.coffee @@ -165,7 +165,6 @@ describe "Autocomplete", -> editor.getBuffer().insert([10,0] ,"extra:sh:extra") editor.setCursorBufferPosition([10,8]) autocomplete.attach() - miniEditor.trigger "core:confirm" expect(editor.lineForBufferRow(10)).toBe "extra:shift:extra" expect(editor.getCursorBufferPosition()).toEqual [10,11] @@ -201,7 +200,7 @@ describe "Autocomplete", -> expect(editor.find('.autocomplete')).not.toExist() it "does not clear out a previously confirmed selection when canceling with an empty list", -> - editor.getBuffer().insert([10, 0], "sort\n") + editor.getBuffer().insert([10, 0], "ort\n") editor.setCursorBufferPosition([10, 0]) autocomplete.attach() diff --git a/src/packages/autocomplete/src/autocomplete.coffee b/src/packages/autocomplete/src/autocomplete.coffee index b45be8970..5ac181560 100644 --- a/src/packages/autocomplete/src/autocomplete.coffee +++ b/src/packages/autocomplete/src/autocomplete.coffee @@ -89,7 +89,7 @@ class Autocomplete extends SelectList @setArray(matches) if matches.length is 1 - @confirmed matches[0] + @confirmSelection() else @editor.appendToLinesView(this) @setPosition(originalCursorPosition)