/// <summary> Activate the selected item. Opens a submenu, or clicks on a normal item</summary> public void ActivateSelected() { if (submenu != null) // if a submenu is up, activate always transfers to it { submenu.SetFocus(); // it becomes the focus submenu.Move(1); // autoselect first item } else { int clickon = selected >= 0 ? selected : mousehovered; // prefer selected.. if (clickon >= 0) // if valid, click it { GLMenuItem mi = ControlsIZ[clickon] as GLMenuItem; if (mi != null) { if (mi.SubMenuItems != null) // it may be closed up, due to going down, then backspacing, so click on it, transfer focus { Select(clickon, true); } else { //System.Diagnostics.Debug.WriteLine("Activate {0} {1}", mi.Name, clickon); GetTopLevelMenu().CloseMenus(); mi.OnClick(); } } else { //System.Diagnostics.Debug.WriteLine("Not MI"); } } } }
private void MenuItemEnter(object c, GLMouseEventArgs e) { GLBaseControl b = c as GLBaseControl; mousehovered = ControlsIZ.IndexOf(b); // when we move the mouse, the selected is discarded, and mousehover takes over SetSelected(-1); GLMenuItem mi = ControlsIZ[mousehovered] as GLMenuItem; // if its a menu item, lets do a timer to autoopen if (mi != null && AutoOpenDelay > 0) { timer.Start(AutoOpenDelay); } }