                     return a.address isnt address.address
                 @props.valueLink.requestChange known
 
-            onDragStart = (event) ->
+            onDragStart = (event) =>
                 event.stopPropagation()
-                data =
-                    name: address.name
-                    address: address.address
-                event.dataTransfer.setData 'text', JSON.stringify(data)
-                event.dataTransfer.effectAllowed = 'move'
-                event.dataTransfer.dropEffect = 'move'
+                if address?
+                    data =
+                        name: address.name
+                        address: address.address
+                    event.dataTransfer.setData 'address', JSON.stringify(data)
+                    event.dataTransfer.effectAllowed = 'all'
+                    # needed to prevent droping over drag source
+                    event.dataTransfer.setData @props.id, true
 
             onDragEnd = (event) ->
                 if event.dataTransfer.dropEffect is 'move'

            open: @state.open and @state.contacts?.length > 0
        current    = 0

        # inChrome, we need to cancel some events for drop to work
        cancelDragEvent = (event) ->
            event.preventDefault()

        div
            className: className,

        address =
            name    : contact.get 'fn'
            address : contact.get 'address'
        known = _.clone @state.known
        known.push address
        @props.valueLink.requestChange known
        @setState unknown: '', contacts: null, open: false

        # try to put back the focus at the end of the field
