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); }
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); }
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); }
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); }
internal static int ListViewScrollToRow(ListViewShared.InternalListViewState ilvState, int currPosY, int row) { return((int)ListViewShared.ListViewScrollToRow(ilvState, new Vector2(0.0f, (float)currPosY), row).y); }
internal static Vector2 ListViewScrollToRow(ListViewShared.InternalListViewState ilvState, int row) { return(ListViewShared.ListViewScrollToRow(ilvState, ilvState.state.scrollPos, row)); }
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); }
internal static bool HasMouseUp(ListViewShared.InternalListViewState ilvState, Rect r) { return(ListViewShared.HasMouseUp(ilvState, r, 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); }
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); }
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)); }