From 189e3be5aee775bb97170e57caa34199becce14f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 2 Oct 2012 10:39:35 -0700 Subject: [PATCH] Wrap around fuzzy finder when at top or bottom --- spec/extensions/fuzzy-finder-spec.coffee | 11 ++++----- .../fuzzy-finder/fuzzy-finder.coffee | 24 +++++++++++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/spec/extensions/fuzzy-finder-spec.coffee b/spec/extensions/fuzzy-finder-spec.coffee index d5b2d6552..fd1b3e774 100644 --- a/spec/extensions/fuzzy-finder-spec.coffee +++ b/spec/extensions/fuzzy-finder-spec.coffee @@ -223,16 +223,15 @@ describe 'FuzzyFinder', -> expect(finder.find('li:eq(1)')).toHaveClass "selected" expect(finder.find('li:eq(2)')).not.toHaveClass "selected" - it "does not fall off the end or begining of the list", -> + it "wraps around when at the end or begining of the list", -> expect(finder.find('li:first')).toHaveClass "selected" + finder.miniEditor.trigger keydownEvent('up') - expect(finder.find('li:first')).toHaveClass "selected" - - for i in [1..finder.pathList.children().length+2] - finder.miniEditor.trigger keydownEvent('down') - expect(finder.find('li:last')).toHaveClass "selected" + finder.miniEditor.trigger keydownEvent('down') + expect(finder.find('li:first')).toHaveClass "selected" + describe "when the fuzzy finder loses focus", -> it "detaches itself", -> rootView.attachToDom() diff --git a/src/extensions/fuzzy-finder/fuzzy-finder.coffee b/src/extensions/fuzzy-finder/fuzzy-finder.coffee index f016017f1..70206338b 100644 --- a/src/extensions/fuzzy-finder/fuzzy-finder.coffee +++ b/src/extensions/fuzzy-finder/fuzzy-finder.coffee @@ -93,18 +93,22 @@ class FuzzyFinder extends View false moveUp: -> - @findSelectedLi() - .filter(':not(:first-child)') - .removeClass('selected') - .prev() - .addClass('selected') + selected = @findSelectedLi().removeClass('selected') + + if selected.filter(':not(:first-child)').length is 0 + selected = @pathList.children('li:last') + else + selected = selected.prev() + selected.addClass('selected') moveDown: -> - @findSelectedLi() - .filter(':not(:last-child)') - .removeClass('selected') - .next() - .addClass('selected') + selected = @findSelectedLi().removeClass('selected') + + if selected.filter(':not(:last-child)').length is 0 + selected = @pathList.children('li:first') + else + selected = selected.next() + selected.addClass('selected') findMatches: (query) -> fuzzyFilter(@paths, query, maxResults: @maxResults)