diff options
| -rw-r--r-- | content_scripts/link_hints.coffee | 7 | ||||
| -rw-r--r-- | lib/dom_utils.coffee | 7 | ||||
| -rw-r--r-- | lib/handler_stack.coffee | 5 | ||||
| -rw-r--r-- | tests/unit_tests/handler_stack_test.coffee | 1 | 
4 files changed, 13 insertions, 7 deletions
| diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 9145454a..f2fb7c19 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -293,11 +293,10 @@ class LinkHintsMode            if keyChar.length == 1              @markerMatcher.pushKeyChar keyChar              @updateVisibleMarkers() -          handlerStack.suppressEvent -      return +          else +            return -    # We've handled the event, so suppress it and update the mode indicator. -    DomUtils.suppressEvent event +    handlerStack.suppressEvent    updateVisibleMarkers: (tabCount = 0) ->      {hintKeystrokeQueue, linkTextKeystrokeQueue} = @markerMatcher diff --git a/lib/dom_utils.coffee b/lib/dom_utils.coffee index d8a5d203..95b9f4b3 100644 --- a/lib/dom_utils.coffee +++ b/lib/dom_utils.coffee @@ -344,7 +344,7 @@ DomUtils =    consumeKeyup: do ->      handlerId = null -    (event, callback = null) -> +    (event, callback = null, suppressPropagation) ->        unless event.repeat          handlerStack.remove handlerId if handlerId?          code = event.code @@ -353,7 +353,10 @@ DomUtils =            keyup: (event) ->              return handlerStack.continueBubbling unless event.code == code              @remove() -            DomUtils.suppressEvent event +            if suppressPropagation +              DomUtils.suppressPropagation event +            else +              DomUtils.suppressEvent event              handlerStack.continueBubbling            # We cannot track keyup events if we lose the focus.            blur: (event) -> diff --git a/lib/handler_stack.coffee b/lib/handler_stack.coffee index 646ddfbd..a43fc356 100644 --- a/lib/handler_stack.coffee +++ b/lib/handler_stack.coffee @@ -57,7 +57,10 @@ class HandlerStack          if result == @passEventToPage            return true          else if result == @suppressPropagation -          DomUtils.suppressPropagation event +          if type == "keydown" +            DomUtils.consumeKeyup event, null, true +          else +            DomUtils.suppressPropagation event            return false          else if result == @restartBubbling            return @bubbleEvent type, event diff --git a/tests/unit_tests/handler_stack_test.coffee b/tests/unit_tests/handler_stack_test.coffee index 7b62af07..374c235b 100644 --- a/tests/unit_tests/handler_stack_test.coffee +++ b/tests/unit_tests/handler_stack_test.coffee @@ -4,6 +4,7 @@ extend(global, require "../../lib/handler_stack.js")  context "handlerStack",    setup ->      stub global, "DomUtils", {} +    stub DomUtils, "consumeKeyup", ->      stub DomUtils, "suppressEvent", ->      stub DomUtils, "suppressPropagation", ->      @handlerStack = new HandlerStack | 
