diff options
| author | jez | 2011-02-02 01:33:29 +0800 |
|---|---|---|
| committer | jez | 2011-02-02 09:34:53 +0800 |
| commit | 77f13f33558123afc8f3b8ad4df0b30979cd396f (patch) | |
| tree | 94cc90b23f8f08a2d2eb044790d528b16285aa12 /linkHints.js | |
| parent | 161958f6fbbff67cf5cdb02d66536c6ca42cee6e (diff) | |
| download | vimium-77f13f33558123afc8f3b8ad4df0b30979cd396f.tar.bz2 | |
Code cleanup.
Diffstat (limited to 'linkHints.js')
| -rw-r--r-- | linkHints.js | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/linkHints.js b/linkHints.js index 65d84360..0eb024b4 100644 --- a/linkHints.js +++ b/linkHints.js @@ -24,7 +24,7 @@ var linkHints = { // While in delayMode, all keypresses have no effect. delayMode: false, // Handle the link hinting marker generation and matching. Must be initialized after settings have been - // loaded. + // loaded, so that we can retrieve the option setting. markerMatcher: undefined, /* @@ -85,14 +85,10 @@ var linkHints = { buildLinkHints: function() { var visibleElements = this.getVisibleClickableElements(); - // Initialize the number used to generate the character hints to be as many digits as we need to - // highlight all the links on the page; we don't want some link hints to have more chars than others. - var linkHintNumber = 0; this.markerMatcher.initSetMarkerAttributes(visibleElements); - for (var i = 0; i < visibleElements.length; i++) { - this.hintMarkers.push(this.createMarkerFor(visibleElements[i], linkHintNumber)); - linkHintNumber++; - } + for (var i = 0; i < visibleElements.length; i++) + this.hintMarkers.push(this.createMarkerFor(visibleElements[i], i)); + // Note(philc): Append these markers as top level children instead of as child nodes to the link itself, // because some clickable elements cannot contain children, e.g. submit buttons. This has the caveat // that if you scroll the page and the link has position=fixed, the marker will not stay fixed. @@ -127,6 +123,7 @@ var linkHints = { // Find all visible clickable elements. for (var i = 0; i < resultSet.snapshotLength; i++) { var element = resultSet.snapshotItem(i); + // Note: this call will be expensive if we modify the DOM in between calls. var clientRect = element.getClientRects()[0]; if (this.isVisible(element, clientRect)) @@ -323,7 +320,6 @@ var linkHints = { marker.clickableItem = link.element; this.markerMatcher.setMarkerAttributes(marker, linkHintNumber); - // Note: this call will be expensive if we modify the DOM in between calls. var clientRect = link.rect; // The coordinates given by the window do not have the zoom factor included since the zoom is set only on // the document node. @@ -341,6 +337,10 @@ var alphabetHints = { digitsNeeded: 1, logXOfBase: function(x, base) { return Math.log(x) / Math.log(base); }, + /* + * Initialize the number used to generate the character hints to be as many digits as we need to highlight + * all the links on the page; we don't want some link hints to have more chars than others. + */ initSetMarkerAttributes: function(visibleElements) { this.digitsNeeded = Math.ceil(this.logXOfBase( visibleElements.length, settings.get('linkHintCharacters').length)); @@ -467,17 +467,13 @@ var filterHints = { var keyChar = getKeyChar(event); if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey) { - if (this.linkTextKeystrokeQueue.length == 0 && this.hintKeystrokeQueue.length == 0) { + // backspace clears hint key queue first, then acts on link text key queue + if (this.hintKeystrokeQueue.pop()) + linksMatched = this.filterLinkHints(linksMatched); + else if (this.linkTextKeystrokeQueue.pop()) + linksMatched = this.filterLinkHints(linksMatched); + else // both queues are empty. exit hinting mode linksMatched = []; - } else { - // backspace clears hint key queue first, then acts on link text key queue - if (this.hintKeystrokeQueue.pop()) - linksMatched = this.filterLinkHints(linksMatched); - else { - this.linkTextKeystrokeQueue.pop(); - linksMatched = this.filterLinkHints(linksMatched); - } - } } else if (event.keyCode == keyCodes.enter) { // activate the lowest-numbered link hint that is visible for (var i = 0; i < linksMatched.length; i++) |
