UnityEditor.ColumnView.DoDragAndDrop C# (CSharp) Method

DoDragAndDrop() private static method

private static DoDragAndDrop ( ListViewState listView, ListViewElement element, List columnViewElements, ObjectColumnGetDataFunction getDataForDraggingFunction ) : void
listView ListViewState
element ListViewElement
columnViewElements List
getDataForDraggingFunction ObjectColumnGetDataFunction
return void
        private static void DoDragAndDrop(ListViewState listView, ListViewElement element, List<ColumnViewElement> columnViewElements, ObjectColumnGetDataFunction getDataForDraggingFunction)
        {
            if (((GUIUtility.hotControl == listView.ID) && (Event.current.type == EventType.MouseDown)) && (element.position.Contains(Event.current.mousePosition) && (Event.current.button == 0)))
            {
                DragAndDropDelay stateObject = (DragAndDropDelay) GUIUtility.GetStateObject(typeof(DragAndDropDelay), listView.ID);
                stateObject.mouseDownPosition = Event.current.mousePosition;
            }
            if (((GUIUtility.hotControl == listView.ID) && (Event.current.type == EventType.MouseDrag)) && GUIClip.visibleRect.Contains(Event.current.mousePosition))
            {
                DragAndDropDelay delay2 = (DragAndDropDelay) GUIUtility.GetStateObject(typeof(DragAndDropDelay), listView.ID);
                if (delay2.CanStartDrag())
                {
                    object data = (getDataForDraggingFunction != null) ? getDataForDraggingFunction(columnViewElements[listView.row].value) : null;
                    if (data != null)
                    {
                        DragAndDrop.PrepareStartDrag();
                        DragAndDrop.objectReferences = new Object[0];
                        DragAndDrop.paths = null;
                        DragAndDrop.SetGenericData("CustomDragData", data);
                        DragAndDrop.StartDrag(columnViewElements[listView.row].name);
                        Event.current.Use();
                    }
                }
            }
        }

Usage Example

示例#1
0
 private int DoListColumn(ListViewState listView, List <ColumnViewElement> columnViewElements, int columnIndex, int selectedIndex, ColumnView.ObjectColumnFunction selectedSearchItemFunction, ColumnView.ObjectColumnFunction selectedRegularItemFunction, ColumnView.ObjectColumnGetDataFunction getDataForDraggingFunction)
 {
     if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return && listView.row > -1)
     {
         if (this.isSearching && selectedSearchItemFunction != null)
         {
             this.DoSearchItemSelectedEvent(selectedSearchItemFunction, columnViewElements[selectedIndex].value);
         }
         if (!this.isSearching && GUIUtility.keyboardControl == listView.ID && selectedRegularItemFunction != null)
         {
             ColumnView.DoItemSelectedEvent(selectedRegularItemFunction, columnViewElements[selectedIndex].value);
         }
     }
     if (GUIUtility.keyboardControl == listView.ID && Event.current.type == EventType.KeyDown && !this.isSearching)
     {
         KeyCode keyCode = Event.current.keyCode;
         if (keyCode != KeyCode.RightArrow)
         {
             if (keyCode == KeyCode.LeftArrow)
             {
                 this.m_ColumnToFocusKeyboard = columnIndex - 1;
                 Event.current.Use();
             }
         }
         else
         {
             this.m_ColumnToFocusKeyboard = columnIndex + 1;
             Event.current.Use();
         }
     }
     foreach (ListViewElement element in ListViewGUILayout.ListView(listView, ColumnView.s_Styles.background, new GUILayoutOption[]
     {
         GUILayout.Width(this.columnWidth)
     }))
     {
         ColumnViewElement columnViewElement = columnViewElements[element.row];
         if (element.row == listView.row && Event.current.type == EventType.Repaint)
         {
             Rect position = element.position;
             position.x += 1f;
             position.y += 1f;
             ColumnView.s_Styles.selected.Draw(position, false, true, true, GUIUtility.keyboardControl == listView.ID);
         }
         GUILayout.Label(columnViewElement.name, new GUILayoutOption[0]);
         if (columnViewElement.value is List <ColumnViewElement> )
         {
             Rect position2 = element.position;
             position2.x  = position2.xMax - (float)ColumnView.s_Styles.categoryArrowIcon.width - 5f;
             position2.y += 2f;
             GUI.Label(position2, ColumnView.s_Styles.categoryArrowIcon);
         }
         this.DoDoubleClick(element, columnViewElement, selectedSearchItemFunction, selectedRegularItemFunction);
         ColumnView.DoDragAndDrop(listView, element, columnViewElements, getDataForDraggingFunction);
     }
     if (Event.current.type == EventType.Layout)
     {
         selectedIndex = listView.row;
     }
     return(selectedIndex);
 }
All Usage Examples Of UnityEditor.ColumnView::DoDragAndDrop