diff options
| author | Stephen Blott | 2016-03-30 13:07:05 +0100 | 
|---|---|---|
| committer | Stephen Blott | 2016-03-30 14:58:46 +0100 | 
| commit | 21da3fcafbb29540788037dbcdbdce79ad14e650 (patch) | |
| tree | 0d4ff357c8cfd25226cb8dd6bf07d398ed3dfb03 /content_scripts | |
| parent | a2fba970e089254adae2631a5b154e6bd92ec1e2 (diff) | |
| download | vimium-21da3fcafbb29540788037dbcdbdce79ad14e650.tar.bz2 | |
Rename handlerStack constants.
Problems:
  - The meanings of some of the Mode/handlerStack constant names is far
    from obvious.
  - The same thing is named different things in different places.
This changes various constant names such that:
  - the names used in the handler stack and in the modes are the same.
  - ditto vis-a-vis DomUtils.
Also, break out the core of the handler stacks' `bubbleEvent` method
into a switch statements.  This makes it more obvious that the cases are
mutually exclusive.
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/link_hints.coffee | 1 | ||||
| -rw-r--r-- | content_scripts/mode.coffee | 36 | ||||
| -rw-r--r-- | content_scripts/mode_insert.coffee | 8 | ||||
| -rw-r--r-- | content_scripts/mode_key_handler.coffee | 10 | 
4 files changed, 23 insertions, 32 deletions
diff --git a/content_scripts/link_hints.coffee b/content_scripts/link_hints.coffee index 59649e5d..254d9811 100644 --- a/content_scripts/link_hints.coffee +++ b/content_scripts/link_hints.coffee @@ -750,7 +750,6 @@ class WaitForEnter extends Mode          else if KeyboardUtils.isEscape event            @exit()            callback false # false -> isSuccess. -        DomUtils.suppressEvent event  root = exports ? window  root.LinkHints = LinkHints diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee index 317fbc86..37321660 100644 --- a/content_scripts/mode.coffee +++ b/content_scripts/mode.coffee @@ -31,12 +31,15 @@ class Mode    @modes: []    # Constants; short, readable names for the return values expected by handlerStack.bubbleEvent. -  continueBubbling: true -  suppressEvent: false -  stopBubblingAndTrue: handlerStack.stopBubblingAndTrue -  stopBubblingAndFalse: handlerStack.stopBubblingAndFalse +  continueBubbling: handlerStack.continueBubbling +  suppressEvent: handlerStack.suppressEvent +  passEventToPage: handlerStack.passEventToPage +  suppressPropagation: handlerStack.suppressPropagation    restartBubbling: handlerStack.restartBubbling +  alwaysContinueBubbling: handlerStack.alwaysContinueBubbling +  alwaysSuppressPropagation: handlerStack.alwaysSuppressPropagation +    constructor: (@options = {}) ->      @handlers = []      @exitHandlers = [] @@ -53,7 +56,8 @@ class Mode      # or 2) to worry about event suppression and event-handler return values.      if @options.suppressAllKeyboardEvents        for type in [ "keydown", "keypress", "keyup" ] -        @options[type] = @alwaysSuppressEvent @options[type] +        do (handler = @options[type]) => +          @options[type] = (event) => @alwaysSuppressPropagation => handler? event      @push        keydown: @options.keydown || null @@ -67,7 +71,7 @@ class Mode          if @options.indicator?            if HUD?.isReady()              if @options.indicator then HUD.show @options.indicator else HUD.hide true, false -          @stopBubblingAndTrue +          @passEventToPage          else @continueBubbling      # If @options.exitOnEscape is truthy, then the mode will exit when the escape key is pressed. @@ -126,7 +130,7 @@ class Mode          _name: "mode-#{@id}/passInitialKeyupEvents"          keydown: => @alwaysContinueBubbling -> handlerStack.remove()          keyup: (event) => -          if KeyboardUtils.isPrintable event then @stopBubblingAndFalse else @stopBubblingAndTrue +          if KeyboardUtils.isPrintable event then @suppressPropagation else @passEventToPage      # if @options.suppressTrailingKeyEvents is set, then  -- on exit -- we suppress all key events until a      # subsquent (non-repeat) keydown or keypress.  In particular, the intention is to catch keyup events for @@ -136,16 +140,16 @@ class Mode        @onExit ->          handler = (event) ->            if event.repeat -            false # Suppress event. +            handlerStack.suppressEvent            else              keyEventSuppressor.exit() -            true # Do not suppress event. +            handlerStack.continueBubbling          keyEventSuppressor = new Mode            name: "suppress-trailing-key-events"            keydown: handler            keypress: handler -          keyup: -> handlerStack.stopBubblingAndFalse +          keyup: -> handlerStack.suppressPropagation      Mode.modes.push this      @setIndicator() @@ -181,18 +185,6 @@ class Mode        @modeIsActive = false        @setIndicator() -  # Shorthand for an otherwise long name.  This wraps a handler with an arbitrary return value, and always -  # yields @continueBubbling instead.  This simplifies handlers if they always continue bubbling (a common -  # case), because they do not need to be concerned with the value they yield. -  alwaysContinueBubbling: handlerStack.alwaysContinueBubbling - -  # Shorthand for an event handler which always suppresses event propagation. -  alwaysSuppressEvent: (handler = null) -> -    (event) => -      handler? event -      DomUtils.suppressPropagation event -      @stopBubblingAndFalse -    # Debugging routines.    logModes: ->      if Mode.debug diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee index f86038d6..9cab52e1 100644 --- a/content_scripts/mode_insert.coffee +++ b/content_scripts/mode_insert.coffee @@ -16,7 +16,7 @@ class InsertMode extends Mode          new PassNextKeyMode          return false -      return @stopBubblingAndTrue unless event.type == 'keydown' and KeyboardUtils.isEscape event +      return @passEventToPage unless event.type == 'keydown' and KeyboardUtils.isEscape event        DomUtils.suppressKeyupAfterEscape handlerStack        target = event.srcElement        if target and DomUtils.isFocusable target @@ -115,19 +115,19 @@ class PassNextKeyMode extends Mode        # We exit on blur because, once we lose the focus, we can no longer track key events.        exitOnBlur: window        keypress: => -        @stopBubblingAndTrue +        @passEventToPage        keydown: =>          seenKeyDown = true          keyDownCount += 1 -        @stopBubblingAndTrue +        @passEventToPage        keyup: =>          if seenKeyDown            unless 0 < --keyDownCount              unless 0 < --count                @exit() -        @stopBubblingAndTrue +        @passEventToPage  root = exports ? window  root.InsertMode = InsertMode diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee index 96792306..ca20be46 100644 --- a/content_scripts/mode_key_handler.coffee +++ b/content_scripts/mode_key_handler.coffee @@ -40,12 +40,12 @@ class KeyHandlerMode extends Mode      if isEscape and (@countPrefix != 0 or @keyState.length != 1)        @keydownEvents[event.keyCode] = true        @reset() -      false # Suppress event. +      @suppressEvent      # If the help dialog loses the focus, then Escape should hide it; see point 2 in #2045.      else if isEscape and HelpDialog?.showing        @keydownEvents[event.keyCode] = true        HelpDialog.hide() -      false # Suppress event. +      @suppressEvent      else if isEscape        @continueBubbling      else if @isMappedKey keyChar @@ -57,7 +57,7 @@ class KeyHandlerMode extends Mode        # prevent triggering page event listeners (e.g. Google instant Search).        @keydownEvents[event.keyCode] = true        DomUtils.suppressPropagation event -      @stopBubblingAndTrue +      @passEventToPage      else        @continueBubbling @@ -68,7 +68,7 @@ class KeyHandlerMode extends Mode      else if @isCountKey keyChar        digit = parseInt keyChar        @reset if @keyState.length == 1 then @countPrefix * 10 + digit else digit -      false # Suppress event. +      @suppressEvent      else        @reset()        @continueBubbling @@ -77,7 +77,7 @@ class KeyHandlerMode extends Mode      return @continueBubbling unless event.keyCode of @keydownEvents      delete @keydownEvents[event.keyCode]      DomUtils.suppressPropagation event -    @stopBubblingAndTrue +    @passEventToPage    # This tests whether there is a mapping of keyChar in the current key state (and accounts for pass keys).    isMappedKey: (keyChar) ->  | 
