diff options
| author | jez | 2011-01-31 13:06:58 +0800 | 
|---|---|---|
| committer | jez | 2011-01-31 15:24:08 +0800 | 
| commit | d4238b381d49b4e52c94d46f4be92eea30e0a3c6 (patch) | |
| tree | 392843bfbea67cd3e46bc36018e3d2dad162e7ea /linkHints.js | |
| parent | ad57590c1d3c4f0ceb7ddc962054a21afddfa224 (diff) | |
| download | vimium-d4238b381d49b4e52c94d46f4be92eea30e0a3c6.tar.bz2 | |
Fix matchHintsByKey's return values
Diffstat (limited to 'linkHints.js')
| -rw-r--r-- | linkHints.js | 43 | 
1 files changed, 21 insertions, 22 deletions
| diff --git a/linkHints.js b/linkHints.js index 36b682b8..de498fbe 100644 --- a/linkHints.js +++ b/linkHints.js @@ -173,7 +173,7 @@ var linkHints = {    },    /* -   * Handles shift and esc keys. The other keys are passed to markerMatcher.normalKeyDownHandler. +   * Handles shift and esc keys. The other keys are passed to markerMatcher.matchHintsByKey.     */    onKeyDownInMode: function(event) {      if (this.delayMode) @@ -200,7 +200,7 @@ var linkHints = {          for (var i in this.hintMarkers)            this.hideMarker(this.hintMarkers[i]);          for (var i in linksMatched) -          this.showMarker(linksMatched[i], this.hintKeystrokeQueue.length); +          this.showMarker(linksMatched[i], this.markerMatcher.hintKeystrokeQueue.length);        }      } @@ -377,24 +377,25 @@ var alphabetHints = {    },    matchHintsByKey: function (event, hintMarkers) { +    var linksMatched = hintMarkers;      var keyChar = getKeyChar(event);      if (!keyChar) -      return hintMarkers; +      return { 'linksMatched': linksMatched };      if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey) {        if (this.hintKeystrokeQueue.length == 0) { -        return []; +        var linksMatched = [];        } else {          this.hintKeystrokeQueue.pop();          var matchString = this.hintKeystrokeQueue.join(""); -        var linksMatched = hintMarkers.filter(function(linkMarker) { +        var linksMatched = linksMatched.filter(function(linkMarker) {            return linkMarker.getAttribute("hintString").indexOf(matchString) == 0;          });        }      } else if (settings.get('linkHintCharacters').indexOf(keyChar) >= 0) {        this.hintKeystrokeQueue.push(keyChar);        var matchString = this.hintKeystrokeQueue.join(""); -      var linksMatched = hintMarkers.filter(function(linkMarker) { +      var linksMatched = linksMatched.filter(function(linkMarker) {          return linkMarker.getAttribute("hintString").indexOf(matchString) == 0;        });      } @@ -457,35 +458,33 @@ var filterHints = {    },    matchHintsByKey: function(event, hintMarkers) { -    var linksMatched; +    var linksMatched = hintMarkers; +    var delay = 0; +    var keyChar = getKeyChar(event); +      if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey) {        if (this.linkTextKeystrokeQueue.length == 0 && this.hintKeystrokeQueue.length == 0) { -        return []; +        linksMatched = [];        } else {          // backspace clears hint key queue first, then acts on link text key queue          if (this.hintKeystrokeQueue.pop()) -          linksMatched = this.filterLinkHints(); +          linksMatched = this.filterLinkHints(linksMatched);          else {            this.linkTextKeystrokeQueue.pop(); -          linksMatched = this.filterLinkHints(); +          linksMatched = this.filterLinkHints(linksMatched);          }        } -      return linksMatched;      } else if (event.keyCode == keyCodes.enter) {          // activate the lowest-numbered link hint that is visible -        for (var i = 0; i < hintMarkers.length; i++) -          if (hintMarkers[i].style.display  != 'none') -            return [ hintMarkers[i] ]; -    } else { -      var keyChar = getKeyChar(event); -      if (!keyChar) -        return hintMarkers; - +        for (var i = 0; i < linksMatched.length; i++) +          if (linksMatched[i].style.display  != 'none') +            linksMatched = [ linksMatched[i] ]; +    } else if (keyChar) {        var matchString;        if (/[0-9]/.test(keyChar)) {          this.hintKeystrokeQueue.push(keyChar);          matchString = this.hintKeystrokeQueue.join(""); -        linksMatched = hintMarkers.filter(function(linkMarker) { +        linksMatched = linksMatched.filter(function(linkMarker) {            return linkMarker.getAttribute('filtered') != 'true'              && linkMarker.getAttribute("hintString").indexOf(matchString) == 0;          }); @@ -494,7 +493,7 @@ var filterHints = {          // should be rendered invalid (i.e. reset).          this.hintKeystrokeQueue = [];          this.linkTextKeystrokeQueue.push(keyChar); -        linksMatched = this.filterLinkHints(hintMarkers); +        linksMatched = this.filterLinkHints(linksMatched);        }        if (linksMatched.length == 1 && !/[0-9]/.test(keyChar)) { @@ -503,8 +502,8 @@ var filterHints = {          // control back to command mode immediately after a match is found.          var delay = 200;        } -      return { 'linksMatched': linksMatched, 'delay': delay };      } +    return { 'linksMatched': linksMatched, 'delay': delay };    },    /* | 
