aboutsummaryrefslogtreecommitdiffstats
path: root/vimiumFrontend.js
diff options
context:
space:
mode:
authorjez2011-02-01 05:01:39 +0800
committerjez2011-02-01 11:12:57 +0800
commit1133f348558e8e70aa5e76ca67a739a5303467bd (patch)
treeb09928d85e438f6297313aefc9b020cedf4ebf95 /vimiumFrontend.js
parentd31aa9fefc26f562f45043ad184846c469a580a9 (diff)
downloadvimium-1133f348558e8e70aa5e76ca67a739a5303467bd.tar.bz2
Use only one key[event] handler for all modes.
Diffstat (limited to 'vimiumFrontend.js')
-rw-r--r--vimiumFrontend.js28
1 files changed, 22 insertions, 6 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index e0b6eb6a..7b43f4c2 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -12,6 +12,7 @@ var findMode = false;
var findModeQuery = "";
var findModeQueryHasResults = false;
var isShowingHelpDialog = false;
+var handlerStack = [];
var keyPort;
var settingPort;
var saveZoomLevelPort;
@@ -339,11 +340,11 @@ function toggleViewSourceCallback(url) {
* Note that some keys will only register keydown events and not keystroke events, e.g. ESC.
*/
function onKeypress(event) {
- var keyChar = "";
-
- if (linkHints.modeActivated)
+ if (!bubbleEvent('keypress', event))
return;
+ var keyChar = "";
+
// Ignore modifier keys by themselves.
if (event.keyCode > 31) {
keyChar = String.fromCharCode(event.charCode);
@@ -373,12 +374,22 @@ function onKeypress(event) {
}
}
-function onKeydown(event) {
- var keyChar = "";
+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
+ // more than one handler.
+ if (handlerStack[i] && handlerStack[i][type] && !handlerStack[i][type](event))
+ return false;
+ }
+ return true;
+}
- if (linkHints.modeActivated)
+function onKeydown(event) {
+ if (!bubbleEvent('keydown', event))
return;
+ var keyChar = "";
+
// handle modifiers being pressed.don't handle shiftKey alone (to avoid / being interpreted as ?
if (event.metaKey && event.keyCode > 31 || event.ctrlKey && event.keyCode > 31 || event.altKey && event.keyCode > 31) {
keyChar = getKeyChar(event);
@@ -459,6 +470,11 @@ function onKeydown(event) {
event.stopPropagation();
}
+function onKeyup() {
+ if (!bubbleEvent('keyup', event))
+ return;
+}
+
function checkIfEnabledForUrl() {
var url = window.location.toString();