Context menu UI backend refactor & better UX (#13318)

closes https://github.com/space-wizards/space-station-14/issues/9209
This commit is contained in:
Kara
2023-01-07 21:24:52 -06:00
committed by GitHub
parent 17be16f1b1
commit 45da85fec6
14 changed files with 218 additions and 187 deletions

View File

@@ -31,14 +31,14 @@ namespace Content.Client.ContextMenu.UI
/// </summary>
public GridContainer MenuBody = new();
private ContextMenuPresenter _presenter;
private ContextMenuUIController _uiController;
public ContextMenuPopup (ContextMenuPresenter presenter, ContextMenuElement? parentElement) : base()
public ContextMenuPopup (ContextMenuUIController uiController, ContextMenuElement? parentElement) : base()
{
RobustXamlLoader.Load(this);
MenuPanel.SetOnlyStyleClass(StyleClassContextMenuPopup);
_presenter = presenter;
_uiController = uiController;
ParentElement = parentElement;
// TODO xaml controls now have the access options -> re-xamlify all this.
@@ -52,7 +52,7 @@ namespace Content.Client.ContextMenu.UI
MenuPanel.MaxHeight = MaxItemsBeforeScroll * (ContextMenuElement.ElementHeight + 2 * ContextMenuElement.ElementMargin) + styleSize.Y;
UserInterfaceManager.ModalRoot.AddChild(this);
MenuBody.OnChildRemoved += ctrl => _presenter.OnRemoveElement(this, ctrl);
MenuBody.OnChildRemoved += ctrl => _uiController.OnRemoveElement(this, ctrl);
MenuBody.VSeparationOverride = 0;
MenuBody.HSeparationOverride = 0;
@@ -67,13 +67,13 @@ namespace Content.Client.ContextMenu.UI
OnPopupHide += () =>
{
if (ParentElement != null)
_presenter.CloseSubMenus(ParentElement.ParentMenu);
_uiController.CloseSubMenus(ParentElement.ParentMenu);
};
}
protected override void Dispose(bool disposing)
{
MenuBody.OnChildRemoved -= ctrl => _presenter.OnRemoveElement(this, ctrl);
MenuBody.OnChildRemoved -= ctrl => _uiController.OnRemoveElement(this, ctrl);
ParentElement = null;
base.Dispose(disposing);
}