diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs
index 99969cb3ed..2df32c999d 100644
--- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs
+++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs
@@ -104,6 +104,18 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, spawnPoints, setupItem);
}
+ /// Splits a string into two parts on the first instance of a given token.
+ static Pair SplitOnFirstToken(string input, string token = "\\n")
+ {
+ if (string.IsNullOrEmpty(input))
+ return Pair.New(null, null);
+
+ var split = input.IndexOf(token, StringComparison.Ordinal);
+ var first = split > 0 ? input.Substring(0, split) : input;
+ var second = split > 0 ? input.Substring(split + token.Length) : null;
+ return Pair.New(first, second);
+ }
+
public static void ShowFactionDropDown(DropDownButtonWidget dropdown, Session.Client client,
OrderManager orderManager, Dictionary factions)
{
@@ -118,11 +130,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
flag.GetImageCollection = () => "flags";
flag.GetImageName = () => factionId;
- var factionName = faction.Description.SubstringBefore("\\n", StringComparison.Ordinal);
- var factionDescription = faction.Description.SubstringAfter("\\n", StringComparison.Ordinal);
- item.GetTooltipText = () => factionName;
- if (factionDescription != factionName)
- item.GetTooltipDesc = () => factionDescription;
+ var tooltip = SplitOnFirstToken(faction.Description);
+ item.GetTooltipText = () => tooltip.First;
+ item.GetTooltipDesc = () => tooltip.Second;
return item;
};
@@ -414,11 +424,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.IsDisabled = () => s.LockFaction || orderManager.LocalClient.IsReady;
dropdown.OnMouseDown = _ => ShowFactionDropDown(dropdown, c, orderManager, factions);
- var factionName = factions[c.Faction].Description.SubstringBefore("\\n", StringComparison.Ordinal);
- var factionDescription = factions[c.Faction].Description.SubstringAfter("\\n", StringComparison.Ordinal);
- dropdown.GetTooltipText = () => factionName;
- if (factionDescription != factionName)
- dropdown.GetTooltipDesc = () => factionDescription;
+ var tooltip = SplitOnFirstToken(factions[c.Faction].Description);
+ dropdown.GetTooltipText = () => tooltip.First;
+ dropdown.GetTooltipDesc = () => tooltip.Second;
SetupFactionWidget(dropdown, s, c, factions);
}