UnityEditor.DragAndDrop.HandleDelayedDrag C# (CSharp) Method

HandleDelayedDrag() static private method

static private HandleDelayedDrag ( Rect position, int id, Object objectToDrag ) : bool
position UnityEngine.Rect
id int
objectToDrag Object
return bool
        internal static bool HandleDelayedDrag(Rect position, int id, Object objectToDrag)
        {
            Event current = Event.current;
            EventType typeForControl = current.GetTypeForControl(id);
            if (typeForControl != EventType.MouseDown)
            {
                if ((typeForControl == EventType.MouseDrag) && (GUIUtility.hotControl == id))
                {
                    DragAndDropDelay stateObject = (DragAndDropDelay) GUIUtility.GetStateObject(typeof(DragAndDropDelay), id);
                    if (stateObject.CanStartDrag())
                    {
                        GUIUtility.hotControl = 0;
                        PrepareStartDrag();
                        Object[] objArray = new Object[] { objectToDrag };
                        objectReferences = objArray;
                        StartDrag(ObjectNames.GetDragAndDropTitle(objectToDrag));
                        return true;
                    }
                }
            }
            else if ((position.Contains(current.mousePosition) && (current.clickCount == 1)) && ((current.button == 0) && ((Application.platform != RuntimePlatform.OSXEditor) || !current.control)))
            {
                GUIUtility.hotControl = id;
                DragAndDropDelay delay = (DragAndDropDelay) GUIUtility.GetStateObject(typeof(DragAndDropDelay), id);
                delay.mouseDownPosition = current.mousePosition;
                return true;
            }
            return false;
        }