aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrmr19932014-12-13 18:01:22 +0000
committermrmr19932014-12-13 18:01:22 +0000
commit87165885c0b32d9825cde2027af92a3191c3b096 (patch)
tree259211057664a6333ee0118ee5e99fc6537d7080
parent6ae4e124efc22de093f67df1a2e3aa626f78e98d (diff)
downloadvimium-87165885c0b32d9825cde2027af92a3191c3b096.tar.bz2
Make keyup event suppression more readable
-rw-r--r--content_scripts/vimium_frontend.coffee10
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()