Stop admin verb pop-in (#27450)

This commit is contained in:
Leon Friedrich
2024-04-29 15:24:10 +12:00
committed by GitHub
parent a466b35b27
commit 1eb81427d3
6 changed files with 68 additions and 33 deletions

View File

@@ -31,6 +31,7 @@ namespace Content.Client.Verbs.UI
public NetEntity CurrentTarget;
public SortedSet<Verb> CurrentVerbs = new();
public List<VerbCategory> ExtraCategories = new();
/// <summary>
/// Separate from <see cref="ContextMenuUIController.RootMenu"/>, since we can open a verb menu as a submenu
@@ -91,19 +92,12 @@ namespace Content.Client.Verbs.UI
menu.MenuBody.DisposeAllChildren();
CurrentTarget = target;
CurrentVerbs = _verbSystem.GetVerbs(target, user, Verb.VerbTypes, force);
CurrentVerbs = _verbSystem.GetVerbs(target, user, Verb.VerbTypes, out ExtraCategories, force);
OpenMenu = menu;
// Fill in client-side verbs.
FillVerbPopup(menu);
// Add indicator that some verbs may be missing.
// I long for the day when verbs will all be predicted and this becomes unnecessary.
if (!target.IsClientSide())
{
_context.AddElement(menu, new ContextMenuElement(Loc.GetString("verb-system-waiting-on-server-text")));
}
// if popup isn't null (ie we are opening out of an entity menu element),
// assume that that is going to handle opening the submenu properly
if (popup != null)
@@ -128,11 +122,19 @@ namespace Content.Client.Verbs.UI
var element = new VerbMenuElement(verb);
_context.AddElement(popup, element);
}
else if (listedCategories.Add(verb.Category.Text))
AddVerbCategory(verb.Category, popup);
}
if (ExtraCategories != null)
{
foreach (var category in ExtraCategories)
{
if (listedCategories.Add(category.Text))
AddVerbCategory(category, popup);
}
}
popup.InvalidateMeasure();
}
@@ -153,10 +155,11 @@ namespace Content.Client.Verbs.UI
}
}
if (verbsInCategory.Count == 0)
if (verbsInCategory.Count == 0 && !ExtraCategories.Contains(category))
return;
var element = new VerbMenuElement(category, verbsInCategory[0].TextStyleClass);
var style = verbsInCategory.FirstOrDefault()?.TextStyleClass ?? Verb.DefaultTextStyleClass;
var element = new VerbMenuElement(category, style);
_context.AddElement(popup, element);
// Create the pop-up that appears when hovering over this element