     _viewId = _ctrl.viewId
     @focus( _viewId )
     @changeActiveControl(_ctrl)
-    @_listeners.dragged.unshift( _viewId ) if @_listeners.dragged.indexOf( _viewId ) == -1
+    @_listeners.dragged.unshift( _viewId ) unless ~@_listeners.dragged.indexOf( _viewId )
     _ctrl.startDrag( @status.crsrX, @status.crsrY, @status.button2 )
   #
   # Cancels text selections, which happen by 

    _doubleClickable = @_listeners.byEvent.doubleClick
    _stop = false
    for _viewId in _focused
      if _doubleClickable.indexOf(_viewId) != -1
        _doubleClicks.push( _viewId )
    for _viewId in _doubleClickable
      _ctrl = @_views[_viewId]

        continue if _viewId == _selfId
        _view = _views[_viewId]
        if _view.hasAncestor? and _view.hasAncestor( HView ) and _view.rect[_matchMethod](_area)
          if ~_droppable.indexOf( _viewId )
            _dropId = _search( _view.viewsZOrder.slice().reverse() )
            return _dropId if _dropId
            return _viewId
