void SelectItem(Menu menu, MenuItem item, bool execute)
{
MenuItem prev_item = CurrentMenu.SelectedItem;
if (prev_item != item.Parent)
{
DeselectItem(prev_item);
if ((CurrentMenu != menu) && (prev_item.Parent != item) && (prev_item.Parent is MenuItem))
{
DeselectItem(prev_item.Parent as MenuItem);
}
}
if (CurrentMenu != menu)
{
CurrentMenu = menu;
}
item.Selected = true;
menu.InvalidateItem(item);
if (((CurrentMenu == TopMenu) && execute) || ((CurrentMenu != TopMenu) && popup_active))
{
item.PerformSelect();
}
if ((execute) && ((prev_item == null) || (item != prev_item.Parent)))
{
ExecFocusedItem(menu, item);
}
}