diff options
Diffstat (limited to 'content_scripts/mode.coffee')
| -rw-r--r-- | content_scripts/mode.coffee | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee index 508b1b2c..49da03e2 100644 --- a/content_scripts/mode.coffee +++ b/content_scripts/mode.coffee @@ -144,6 +144,25 @@ class Mode keyup: (event) => if KeyboardUtils.isPrintable event then @stopBubblingAndFalse else @stopBubblingAndTrue + # if @options.suppressTrailingKeyEvents is set, then we suppress all key events until a subsquent + # (non-repeat) keydown or keypress. In particular, the intention is to catch keyup events for keys which + # we have handled, but which otherwise might trigger page actions (if the page is listening for keyup + # events). + if @options.suppressTrailingKeyEvents + @onExit -> + handler = (event) -> + if event.repeat + false # Suppress event. + else + keyEventSuppressor.exit() + true # Do not suppress event. + + keyEventSuppressor = new Mode + name: "suppress-trailing-key-events" + keydown: handler + keypress: handler + keyup: -> handlerStack.stopBubblingAndFalse + Mode.modes.push @ @setIndicator() @logModes() |
