aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJez Ng2012-01-09 13:21:42 +0800
committerJez Ng2012-01-09 13:21:45 +0800
commita89f2dbd45871487efb998efc466765a42f11311 (patch)
treebe4e27ba998958b2e594e77895be017a17c7873b
parent6ae84b98b094384e9a5e4eeaa2f041ea1140633f (diff)
downloadvimium-a89f2dbd45871487efb998efc466765a42f11311.tar.bz2
Capture all key events when in delayMode.
Closes #396.
-rw-r--r--linkHints.js9
-rw-r--r--vimiumFrontend.js4
2 files changed, 13 insertions, 0 deletions
diff --git a/linkHints.js b/linkHints.js
index fed190dc..604e91e9 100644
--- a/linkHints.js
+++ b/linkHints.js
@@ -31,6 +31,7 @@ var linkHints = {
*/
init: function() {
this.onKeyDownInMode = this.onKeyDownInMode.bind(this);
+ this.onKeyPressInMode = this.onKeyPressInMode.bind(this);
this.onKeyUpInMode = this.onKeyUpInMode.bind(this);
this.markerMatcher = settings.get('filterLinkHints') == "true" ? filterHints : alphabetHints;
},
@@ -57,6 +58,7 @@ var linkHints = {
this.buildLinkHints();
handlerStack.push({ // modeKeyHandler is declared by vimiumFrontend.js
keydown: this.onKeyDownInMode,
+ keypress: this.onKeyPressInMode,
keyup: this.onKeyUpInMode
});
@@ -217,7 +219,14 @@ var linkHints = {
event.preventDefault();
},
+ onKeyPressInMode: function(event) {
+ return !this.delayMode;
+ },
+
onKeyUpInMode: function(event) {
+ if (this.delayMode)
+ return;
+
if (event.keyCode == keyCodes.shiftKey && this.openLinkModeToggle) {
// Revert toggle on whether to open link in new or current tab.
this.setOpenLinkMode(!this.shouldOpenInNewTab, this.shouldOpenWithQueue, false);
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 56c425bb..d485163b 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -337,6 +337,10 @@ function onKeypress(event) {
}
}
+/**
+ * Called whenever we receive a key event. Each individual handler has the option to stop the event's
+ * propagation by returning a falsy value.
+ */
function bubbleEvent(type, event) {
for (var i = handlerStack.length-1; i >= 0; i--) {
// We need to check for existence of handler because the last function call may have caused the release of