Jump To …

event-handlers.coffee

utils           = require 'utils'
{ getCommand }  = require 'commands'
{ Vim }         = require 'vim'

{ interfaces: Ci } = Components

vimBucket = new utils.Bucket utils.getWindowId, (obj) -> new Vim obj

suppressEvent = (event) ->
  event.preventDefault()
  event.stopPropagation()

The following handlers are installed on every top level DOM window

handlers = 
  'keypress': (event) ->
    try
      isEditable =  utils.isElementEditable event.originalTarget
      key = utils.keyboardEventKey event

We only handle the key if there is no focused editable element or if it's the Esc key, which will remote the focus from the currently focused element

      if key and (key == 'Esc' or not isEditable)
        if window = utils.getEventTabWindow event
          if vimBucket.get(window)?.keypress key
            suppressEvent event
    catch err
      console.log err

  'TabClose': (event) ->
    if gBrowser = utils.getEventTabBrowser event
      if browser = gBrowser.getBrowserForTab event.originalTarget
        vimBucket.forget browser.contentWindow.wrappedJSObject

  'DOMWindowClose': (event) ->
    if gBrowser = event.originalTarget.gBrowser
      for tab in gBrowser.tabs
        if browser = gBrowser.getBrowserForTab tab
          vimBucket.forget browser.contentWindow.wrappedJSObject

exports.handlers = handlers