diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs index 0e7eb4bb27..dbe46ed3a4 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs @@ -257,23 +257,35 @@ namespace OpenRA.Mods.Common.Widgets.Logic name.IsDisabled = () => orderManager.LocalClient.IsReady; name.Text = c.Name; + var escPressed = false; name.OnLoseFocus = () => { + if (escPressed) + { + escPressed = false; + return; + } + name.Text = name.Text.Trim(); if (name.Text.Length == 0) name.Text = c.Name; - - if (name.Text == c.Name) - return; - - name.Text = Settings.SanitizedPlayerName(name.Text); - - orderManager.IssueOrder(Order.Command("name " + name.Text)); - Game.Settings.Player.Name = name.Text; - Game.Settings.Save(); + else if (name.Text != c.Name) + { + name.Text = Settings.SanitizedPlayerName(name.Text); + orderManager.IssueOrder(Order.Command("name " + name.Text)); + Game.Settings.Player.Name = name.Text; + Game.Settings.Save(); + } }; name.OnEnterKey = () => { name.YieldKeyboardFocus(); return true; }; + name.OnEscKey = () => + { + name.Text = c.Name; + escPressed = true; + name.YieldKeyboardFocus(); + return true; + }; } public static void SetupNameWidget(Widget parent, Session.Slot s, Session.Client c)