diff options
| author | mrmr1993 | 2014-12-13 18:01:22 +0000 |
|---|---|---|
| committer | mrmr1993 | 2014-12-13 18:01:22 +0000 |
| commit | 87165885c0b32d9825cde2027af92a3191c3b096 (patch) | |
| tree | 259211057664a6333ee0118ee5e99fc6537d7080 | |
| parent | 6ae4e124efc22de093f67df1a2e3aa626f78e98d (diff) | |
| download | vimium-87165885c0b32d9825cde2027af92a3191c3b096.tar.bz2 | |
Make keyup event suppression more readable
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 487012dd..55de9274 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -474,14 +474,20 @@ onKeyup = (event) -> return unless handlerStack.bubbleEvent("keyup", event) return if isInsertMode() - # Don't propagate the keyup to the underlying page if Vimium has handled it. See #733. + # Check whether we have handled a keydown for this keyup, and remove all matching keydowns from + # handledKeydownEvents. + # NOTE: There can be multiple keydown events for every keyup due to keys repeating when held. + hasHandledKeydown = false handledKeydownEvents = handledKeydownEvents.filter (keydown) -> (event.metaKey != keydown.metaKey or event.altKey != keydown.altKey or event.ctrlKey != keydown.ctrlKey or event.keyIdentifier != keydown.keyIdentifier or event.keyCode != keydown.keyCode) and - DomUtils.suppressPropagation(event) # Suppress the event if we found a corresponding keydown + hasHandledKeydown = true # We've found a matching keydown! + + # Don't propagate the keyup to the underlying page if Vimium has handled it. See #733. + DomUtils.suppressPropagation(event) if hasHandledKeydown checkIfEnabledForUrl = -> url = window.location.toString() |
