internal static bool HasMouseUp(ListViewShared.InternalListViewState ilvState, Rect r, int button)
        {
            bool result;

            if (Event.current.type == EventType.MouseUp && Event.current.button == button)
            {
                if (r.Contains(Event.current.mousePosition))
                {
                    GUIUtility.hotControl = 0;
                    Event.current.Use();
                    result = true;
                    return(result);
                }
            }
            result = false;
            return(result);
        }
        internal static bool HasMouseDown(ListViewShared.InternalListViewState ilvState, Rect r, int button)
        {
            bool result;

            if (Event.current.type == EventType.MouseDown && Event.current.button == button)
            {
                if (r.Contains(Event.current.mousePosition))
                {
                    GUIUtility.hotControl      = ilvState.state.ID;
                    GUIUtility.keyboardControl = ilvState.state.ID;
                    ListViewShared.isDragging  = false;
                    Event.current.Use();
                    result = true;
                    return(result);
                }
            }
            result = false;
            return(result);
        }
Exemple #3
0
        private static bool DoLVPageUpDown(ListViewShared.InternalListViewState ilvState, ref int selectedRow, ref Vector2 scrollPos, bool up)
        {
            int  num = ilvState.endRow - ilvState.invisibleRows;
            bool result;

            if (up)
            {
                if (!ListViewShared.OSX)
                {
                    selectedRow -= num;
                    if (selectedRow < 0)
                    {
                        selectedRow = 0;
                    }
                    result = true;
                    return(result);
                }
                scrollPos.y -= (float)(ilvState.state.rowHeight * num);
                if (scrollPos.y < 0f)
                {
                    scrollPos.y = 0f;
                }
            }
            else
            {
                if (!ListViewShared.OSX)
                {
                    selectedRow += num;
                    if (selectedRow >= ilvState.state.totalRows)
                    {
                        selectedRow = ilvState.state.totalRows - 1;
                    }
                    result = true;
                    return(result);
                }
                scrollPos.y += (float)(ilvState.state.rowHeight * num);
            }
            result = false;
            return(result);
        }
Exemple #4
0
        private static bool DoLVPageUpDown(ListViewShared.InternalListViewState ilvState, ref int selectedRow, ref Vector2 scrollPos, bool up)
        {
            int num = ilvState.endRow - ilvState.invisibleRows;

            if (up)
            {
                if (ListViewShared.OSX)
                {
                    scrollPos.y -= (float)(ilvState.state.rowHeight * num);
                    if ((double)scrollPos.y < 0.0)
                    {
                        scrollPos.y = 0.0f;
                    }
                }
                else
                {
                    selectedRow = selectedRow - num;
                    if (selectedRow < 0)
                    {
                        selectedRow = 0;
                    }
                    return(true);
                }
            }
            else if (ListViewShared.OSX)
            {
                scrollPos.y += (float)(ilvState.state.rowHeight * num);
            }
            else
            {
                selectedRow = selectedRow + num;
                if (selectedRow >= ilvState.state.totalRows)
                {
                    selectedRow = ilvState.state.totalRows - 1;
                }
                return(true);
            }
            return(false);
        }
 internal static Vector2 ListViewScrollToRow(ListViewShared.InternalListViewState ilvState, Vector2 currPos, int row)
 {
     if (ilvState.invisibleRows < row && ilvState.endRow > row)
     {
         return(currPos);
     }
     if (row <= ilvState.invisibleRows)
     {
         currPos.y = (float)(ilvState.state.rowHeight * row);
     }
     else
     {
         currPos.y = (float)(ilvState.state.rowHeight * (row + 1) - ilvState.rectHeight);
     }
     if (currPos.y < 0f)
     {
         currPos.y = 0f;
     }
     else if (currPos.y > (float)(ilvState.state.totalRows * ilvState.state.rowHeight - ilvState.rectHeight))
     {
         currPos.y = (float)(ilvState.state.totalRows * ilvState.state.rowHeight - ilvState.rectHeight);
     }
     return(currPos);
 }
Exemple #6
0
        internal static bool SendKey(ListViewShared.InternalListViewState ilvState, KeyCode keyCode, int totalCols)
        {
            ListViewState state = ilvState.state;

            switch (keyCode)
            {
            case KeyCode.UpArrow:
                if (state.row > 0)
                {
                    --state.row;
                    break;
                }
                break;

            case KeyCode.DownArrow:
                if (state.row < state.totalRows - 1)
                {
                    ++state.row;
                    break;
                }
                break;

            case KeyCode.RightArrow:
                if (state.column < totalCols - 1)
                {
                    ++state.column;
                    break;
                }
                break;

            case KeyCode.LeftArrow:
                if (state.column > 0)
                {
                    --state.column;
                    break;
                }
                break;

            case KeyCode.Home:
                state.row = 0;
                break;

            case KeyCode.End:
                state.row = state.totalRows - 1;
                break;

            case KeyCode.PageUp:
                if (!ListViewShared.DoLVPageUpDown(ilvState, ref state.row, ref state.scrollPos, true))
                {
                    Event.current.Use();
                    return(false);
                }
                break;

            case KeyCode.PageDown:
                if (!ListViewShared.DoLVPageUpDown(ilvState, ref state.row, ref state.scrollPos, false))
                {
                    Event.current.Use();
                    return(false);
                }
                break;

            default:
                return(false);
            }
            state.scrollPos = ListViewShared.ListViewScrollToRow(ilvState, state.scrollPos, state.row);
            Event.current.Use();
            return(true);
        }
Exemple #7
0
 internal static int ListViewScrollToRow(ListViewShared.InternalListViewState ilvState, int currPosY, int row)
 {
     return((int)ListViewShared.ListViewScrollToRow(ilvState, new Vector2(0.0f, (float)currPosY), row).y);
 }
Exemple #8
0
 internal static Vector2 ListViewScrollToRow(ListViewShared.InternalListViewState ilvState, int row)
 {
     return(ListViewShared.ListViewScrollToRow(ilvState, ilvState.state.scrollPos, row));
 }
Exemple #9
0
        internal static bool MultiSelection(ListViewShared.InternalListViewState ilvState, int prevSelected, int currSelected, ref int initialSelected, ref bool[] selectedItems)
        {
            bool shift     = Event.current.shift;
            bool actionKey = EditorGUI.actionKey;
            bool flag      = false;

            if ((shift || actionKey) && initialSelected == -1)
            {
                initialSelected = prevSelected;
            }
            if (shift)
            {
                int num1 = Math.Min(initialSelected, currSelected);
                int num2 = Math.Max(initialSelected, currSelected);
                if (!actionKey)
                {
                    for (int index = 0; index < num1; ++index)
                    {
                        if (selectedItems[index])
                        {
                            flag = true;
                        }
                        selectedItems[index] = false;
                    }
                    for (int index = num2 + 1; index < selectedItems.Length; ++index)
                    {
                        if (selectedItems[index])
                        {
                            flag = true;
                        }
                        selectedItems[index] = false;
                    }
                }
                if (num1 < 0)
                {
                    num1 = num2;
                }
                for (int index = num1; index <= num2; ++index)
                {
                    if (!selectedItems[index])
                    {
                        flag = true;
                    }
                    selectedItems[index] = true;
                }
            }
            else if (actionKey)
            {
                selectedItems[currSelected] = !selectedItems[currSelected];
                initialSelected             = currSelected;
                flag = true;
            }
            else
            {
                if (!selectedItems[currSelected])
                {
                    flag = true;
                }
                for (int index = 0; index < selectedItems.Length; ++index)
                {
                    if (selectedItems[index] && currSelected != index)
                    {
                        flag = true;
                    }
                    selectedItems[index] = false;
                }
                initialSelected             = -1;
                selectedItems[currSelected] = true;
            }
            if (ilvState != null)
            {
                ilvState.state.scrollPos = ListViewShared.ListViewScrollToRow(ilvState, currSelected);
            }
            return(flag);
        }
Exemple #10
0
 internal static bool HasMouseUp(ListViewShared.InternalListViewState ilvState, Rect r)
 {
     return(ListViewShared.HasMouseUp(ilvState, r, 0));
 }
Exemple #11
0
        internal static bool MultiSelection(ListViewShared.InternalListViewState ilvState, int prevSelected, int currSelected, ref int initialSelected, ref bool[] selectedItems)
        {
            bool shift     = Event.current.shift;
            bool actionKey = EditorGUI.actionKey;
            bool result    = false;

            if ((shift || actionKey) && initialSelected == -1)
            {
                initialSelected = prevSelected;
            }
            if (shift)
            {
                int num  = Math.Min(initialSelected, currSelected);
                int num2 = Math.Max(initialSelected, currSelected);
                if (!actionKey)
                {
                    for (int i = 0; i < num; i++)
                    {
                        if (selectedItems[i])
                        {
                            result = true;
                        }
                        selectedItems[i] = false;
                    }
                    for (int j = num2 + 1; j < selectedItems.Length; j++)
                    {
                        if (selectedItems[j])
                        {
                            result = true;
                        }
                        selectedItems[j] = false;
                    }
                }
                if (num < 0)
                {
                    num = num2;
                }
                for (int k = num; k <= num2; k++)
                {
                    if (!selectedItems[k])
                    {
                        result = true;
                    }
                    selectedItems[k] = true;
                }
            }
            else if (actionKey)
            {
                selectedItems[currSelected] = !selectedItems[currSelected];
                initialSelected             = currSelected;
                result = true;
            }
            else
            {
                if (!selectedItems[currSelected])
                {
                    result = true;
                }
                for (int l = 0; l < selectedItems.Length; l++)
                {
                    if (selectedItems[l] && currSelected != l)
                    {
                        result = true;
                    }
                    selectedItems[l] = false;
                }
                initialSelected             = -1;
                selectedItems[currSelected] = true;
            }
            if (ilvState != null)
            {
                ilvState.state.scrollPos = ListViewShared.ListViewScrollToRow(ilvState, currSelected);
            }
            return(result);
        }
Exemple #12
0
        internal static bool SendKey(ListViewShared.InternalListViewState ilvState, KeyCode keyCode, int totalCols)
        {
            ListViewState state = ilvState.state;
            bool          result;

            switch (keyCode)
            {
            case KeyCode.UpArrow:
                if (state.row > 0)
                {
                    state.row--;
                }
                goto IL_14C;

            case KeyCode.DownArrow:
                if (state.row < state.totalRows - 1)
                {
                    state.row++;
                }
                goto IL_14C;

            case KeyCode.RightArrow:
                if (state.column < totalCols - 1)
                {
                    state.column++;
                }
                goto IL_14C;

            case KeyCode.LeftArrow:
                if (state.column > 0)
                {
                    state.column--;
                }
                goto IL_14C;

            case KeyCode.Home:
                state.row = 0;
                goto IL_14C;

            case KeyCode.End:
                state.row = state.totalRows - 1;
                goto IL_14C;

            case KeyCode.PageUp:
                if (!ListViewShared.DoLVPageUpDown(ilvState, ref state.row, ref state.scrollPos, true))
                {
                    Event.current.Use();
                    result = false;
                    return(result);
                }
                goto IL_14C;

            case KeyCode.PageDown:
                if (!ListViewShared.DoLVPageUpDown(ilvState, ref state.row, ref state.scrollPos, false))
                {
                    Event.current.Use();
                    result = false;
                    return(result);
                }
                goto IL_14C;
            }
            result = false;
            return(result);

IL_14C:
            state.scrollPos = ListViewShared.ListViewScrollToRow(ilvState, state.scrollPos, state.row);
            Event.current.Use();
            result = true;
            return(result);
        }
Exemple #13
0
        internal static bool ListViewKeyboard(ListViewShared.InternalListViewState ilvState, int totalCols)
        {
            int totalRows = ilvState.state.totalRows;

            return(Event.current.type == EventType.KeyDown && totalRows != 0 && GUIUtility.keyboardControl == ilvState.state.ID && Event.current.GetTypeForControl(ilvState.state.ID) == EventType.KeyDown && ListViewShared.SendKey(ilvState, Event.current.keyCode, totalCols));
        }