/// <summary> /// Add a popup to this menu and assign this menu as the parent for the popup. /// </summary> /// <param name="mcMenu">The new popup object.</param> /// <param name="data">Data that is passed to the popup that is created.</param> public MCMenu AddPopup(MCMenu mcMenu, object data = null) { PopupMenus.Add(mcMenu); mcMenu.Parent = this; mcMenu.Show(data); _menuController.OnMenuAdded(mcMenu); return(mcMenu); }
/// <summary> /// Show a specific menu. /// If this menu needs fullscreen and the current active menus allow it to override them, it will close the current menus. /// </summary> /// <param name="mcMenu">The new menu. (this is a copy of the original)</param> /// <param name="mcMenuData"></param> public MCMenu ShowMenu(MCMenu mcMenu, object mcMenuData = null) { if (mcMenu.Fullscreen) { bool canShow = true; for (int i = 0; i < _activeMenus.Count; i++) { if (_activeMenus[i].ShouldBlockNewMenu) { canShow = false; break; } } if (canShow) { // Hide the current menu's and show this one. HideAllBlockingMenus(); } else { if (mcMenu.ShouldBeQueued) { _menuQueue.Enqueue(new MenuQueueItem(mcMenu, mcMenuData)); } return(mcMenu); } } InitializeOutsideClick(mcMenu); // Add ourselves as the owner of the menu. mcMenu.SetMenuController(this); // We can show this one. mcMenu.Show(mcMenuData); _activeMenus.Add(mcMenu); return(mcMenu); }