KeePass.UI.CustomListViewEx.SkipGroupHeaderIfRequired C# (CSharp) Method

SkipGroupHeaderIfRequired() private method

private SkipGroupHeaderIfRequired ( KeyEventArgs e ) : bool
e System.Windows.Forms.KeyEventArgs
return bool
        private bool SkipGroupHeaderIfRequired(KeyEventArgs e)
        {
            if(!this.ShowGroups) return false;
            if(this.MultiSelect) return false;

            ListViewItem lvi = this.FocusedItem;
            if(lvi != null)
            {
                ListViewGroup g = lvi.Group;
                ListViewItem lviChangeTo = null;

                if((e.KeyCode == Keys.Up) && IsFirstLastItemInGroup(g, lvi, true))
                    lviChangeTo = (GetNextLvi(g, true) ?? lvi); // '??' for top item
                else if((e.KeyCode == Keys.Down) && IsFirstLastItemInGroup(g, lvi, false))
                    lviChangeTo = (GetNextLvi(g, false) ?? lvi); // '??' for bottom item

                if(lviChangeTo != null)
                {
                    foreach(ListViewItem lviEnum in this.Items)
                        lviEnum.Selected = false;

                    lviChangeTo.Selected = true;
                    lviChangeTo.Focused = true;
                    EnsureVisible(lviChangeTo.Index);

                    e.Handled = true;
                    return true;
                }
            }

            return false;
        }