internal void SetSelectionOnItem(AdvancedDropdownItem item, int selectedIndex) { AdvancedDropdownItemState state = GetStateForItem(item); if (selectedIndex < 0) { state.selectedIndex = 0; } else if (selectedIndex >= item.Children.Count()) { state.selectedIndex = item.Children.Count() - 1; } else { state.selectedIndex = selectedIndex; } }
private AdvancedDropdownItemState GetStateForItem(AdvancedDropdownItem item) { if (m_LastSelectedState != null && m_LastSelectedState.itemId == item.id) { return(m_LastSelectedState); } for (int i = 0; i < states.Length; i++) { if (states[i].itemId == item.id) { m_LastSelectedState = states[i]; return(m_LastSelectedState); } } Array.Resize(ref states, states.Length + 1); states[states.Length - 1] = new AdvancedDropdownItemState(item); m_LastSelectedState = states[states.Length - 1]; return(states[states.Length - 1]); }
internal void MoveUpSelection(AdvancedDropdownItem item) { AdvancedDropdownItemState state = GetStateForItem(item); int selectedIndex = state.selectedIndex; do { --selectedIndex; }while (selectedIndex >= 0 && item.Children.ElementAt(selectedIndex).IsSeparator()); if (selectedIndex < 0) { selectedIndex = item.Children.Count() - 1; } if (selectedIndex >= 0) { SetSelectionOnItem(item, selectedIndex); } }