private void __dragEnd(EventContext evt)
    {
        if (_agent.parent == null) //cancelled
        {
            return;
        }

        GRoot.inst.RemoveChild(_agent);

        object sourceData = _sourceData;

        _sourceData = null;

        GObject obj = GRoot.inst.objectUnderMouse;

        while (obj != null)
        {
            EventListener listener = obj.GetEventListener(DROP_EVENT);
            if (listener != null)
            {
                obj.RequestFocus();
                listener.Call(sourceData);
                return;
            }

            obj = obj.parent;
        }
    }