       delete @_listeners.byId[_viewId]
     else
       @warn( "EventManager##{_warnMethodName} => viewId not registered: #{_viewId}" )
-      console.log(@_listeners.byId[_viewId],_viewId,_ctrl)
     for _key, _value of @_listeners.byEvent
       _viewIdx = _value.indexOf(_viewId)
       _value.splice(_viewIdx,1) if ~_viewIdx

    4: []
    keysDown: []
    hasKeyDown: (k)->
      if ~@keysDown.indexOf(k) then true else false
    addKeyDown: (k)->
      if !@hasKeyDown(k)
        @keysDown.push( k )

      for _viewId in _parentIds
        continue if _viewId == _selfId
        _view = _views[_viewId]
        if _view.parent.hasAncestor( HView )
          if _area.offsetTo?
            _searchArea = HRect.nu(_area).offsetTo( _area.left-_view.parent.pageX(), _area.top-_view.parent.pageY() )
          else
            _searchArea = HPoint.nu( _area.x-_view.parent.pageX(), _area.y-_view.parent.pageY() )
        else
          _searchArea = _area
        if _view.hasAncestor? and _view.hasAncestor( HView ) and _view.rect[_matchMethod](_searchArea)
          if ~_droppable.indexOf( _viewId )
            _dropId = _search( _view.viewsZOrder.slice().reverse() )
            return _dropId if _dropId
