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;
}