From c783b653e185166009ba0cdf94c6fdbb442d7f39 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Thu, 1 Jan 2015 17:40:31 +0000 Subject: Modes; revert and modify normal-mode key handling. --- content_scripts/vimium_frontend.coffee | 37 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'content_scripts') diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 6480d511..b40e9735 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -428,6 +428,7 @@ KeydownEvents = # # Note that some keys will only register keydown events and not keystroke events, e.g. ESC. # + onKeypress = (event) -> keyChar = "" @@ -438,22 +439,21 @@ onKeypress = (event) -> # Enter insert mode when the user enables the native find interface. if (keyChar == "f" && KeyboardUtils.isPrimaryModifierKey(event)) enterInsertModeWithoutShowingIndicator() - return Mode.propagate + return true if (keyChar) if (findMode) handleKeyCharForFindMode(keyChar) - return Mode.suppressPropagation + DomUtils.suppressEvent(event) else if (!isInsertMode() && !findMode) if (isPassKey keyChar) - return Mode.propagate + return handlerStack.passThrough if (currentCompletionKeys.indexOf(keyChar) != -1 or isValidFirstKey(keyChar)) - keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) - return Mode.suppressPropagation + DomUtils.suppressEvent(event) keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) - return Mode.propagate + return true onKeydown = (event) -> keyChar = "" @@ -493,39 +493,38 @@ onKeydown = (event) -> event.srcElement.blur() exitInsertMode() DomUtils.suppressEvent event - KeydownEvents.push event + handledKeydownEvents.push event else if (findMode) if (KeyboardUtils.isEscape(event)) handleEscapeForFindMode() + DomUtils.suppressEvent event KeydownEvents.push event - return Mode.suppressPropagation else if (event.keyCode == keyCodes.backspace || event.keyCode == keyCodes.deleteKey) handleDeleteForFindMode() + DomUtils.suppressEvent event KeydownEvents.push event - return Mode.suppressPropagation else if (event.keyCode == keyCodes.enter) handleEnterForFindMode() + DomUtils.suppressEvent event KeydownEvents.push event - return Mode.suppressPropagation else if (!modifiers) + DomUtils.suppressPropagation(event) KeydownEvents.push event - return Mode.suppressPropagation else if (isShowingHelpDialog && KeyboardUtils.isEscape(event)) hideHelpDialog() + DomUtils.suppressEvent event KeydownEvents.push event - return Mode.suppressPropagation else if (!isInsertMode() && !findMode) if (keyChar) if (currentCompletionKeys.indexOf(keyChar) != -1 or isValidFirstKey(keyChar)) + DomUtils.suppressEvent event KeydownEvents.push event - keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) - return Mode.suppressPropagation keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) @@ -533,7 +532,7 @@ onKeydown = (event) -> keyPort.postMessage({ keyChar:"", frameId:frameId }) else if isPassKey KeyboardUtils.getKeyChar(event) - return Mode.propagate + return undefined # Added to prevent propagating this event to other listeners if it's one that'll trigger a Vimium command. # The goal is to avoid the scenario where Google Instant Search uses every keydown event to dump us @@ -545,14 +544,14 @@ onKeydown = (event) -> if (keyChar == "" && !isInsertMode() && (currentCompletionKeys.indexOf(KeyboardUtils.getKeyChar(event)) != -1 || isValidFirstKey(KeyboardUtils.getKeyChar(event)))) - # Suppress chrome propagation of this event, but drop through, and continue handler-stack processing. - DomUtils.suppressPropagation event + DomUtils.suppressPropagation(event) KeydownEvents.push event - return Mode.propagate + return true onKeyup = (event) -> - if KeydownEvents.pop event then Mode.suppressPropagation else Mode.propagate + DomUtils.suppressPropagation(event) if KeydownEvents.pop event + return true checkIfEnabledForUrl = -> url = window.location.toString() -- cgit v1.2.3