diff options
| author | ilya | 2010-03-15 19:20:20 -0700 |
|---|---|---|
| committer | ilya | 2010-03-15 19:20:20 -0700 |
| commit | 12ac20bf512849e65442fde581b955472052c82b (patch) | |
| tree | 7a02c126c1b4d82e6ffd2d8e595712169115a381 /vimiumFrontend.js | |
| parent | 1930b5ff05f755b04b8fb77b40d37e82625bb286 (diff) | |
| download | vimium-12ac20bf512849e65442fde581b955472052c82b.tar.bz2 | |
Fix a bug where the second modifier key was ignored (due to else-if's). This closes issue 97.
Diffstat (limited to 'vimiumFrontend.js')
| -rw-r--r-- | vimiumFrontend.js | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js index f5c8e552..a28d0810 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -26,6 +26,8 @@ var linkHintCss; // TODO(philc): This should be pulled from the extension's storage when the page loads. var currentZoomLevel = 100; +var hasModifiersRegex = /^<([amc]-)+.>/; + function getSetting(key) { if (!settingPort) settingPort = chrome.extension.connect({ name: "getSetting" }); @@ -246,12 +248,12 @@ function onKeydown(event) { { if (event.shiftKey) keyChar = keyChar.toUpperCase(); - else if (event.ctrlKey) - keyChar = "<c-" + keyChar + ">"; - else if (event.metaKey) - keyChar = "<m-" + keyChar + ">"; - else if (event.altKey) - keyChar = "<a-" + keyChar + ">"; + if (event.ctrlKey) + keyChar = prependModifier("c", keyChar); + if (event.metaKey) + keyChar = prependModifier("m", keyChar); + if (event.altKey) + keyChar = prependModifier("a", keyChar); } } @@ -304,6 +306,13 @@ function onKeydown(event) { } } +function prependModifier(modifier, keyChar) { + if (keyChar.search(hasModifiersRegex) == 0) + return "<" + modifier + "-" + keyChar.slice(1, keyChar.length - 1) + ">"; + else + return "<" + modifier + "-" + keyChar + ">"; +} + function refreshCompletionKeys(completionKeys) { if (completionKeys) currentCompletionKeys = completionKeys; |
