Make text fields yield keyboard focus on "Esc" in a consistent way

- search fields clear the input and yield if empty
- chat field and actor edit field yield without clearing
This commit is contained in:
Ivaylo Draganov
2021-07-04 16:24:34 +03:00
committed by abcdefg30
parent df8295fa2c
commit 64e76e1a90
4 changed files with 22 additions and 9 deletions

View File

@@ -133,7 +133,18 @@ namespace OpenRA.Mods.Common.Widgets.Logic
filenameInput = panel.Get<TextFieldWidget>("FILENAME_INPUT");
filenameInput.OnTextEdited = () => ApplyFilter();
filenameInput.OnEscKey = _ => filenameInput.YieldKeyboardFocus();
filenameInput.OnEscKey = _ =>
{
if (string.IsNullOrEmpty(filenameInput.Text))
filenameInput.YieldKeyboardFocus();
else
{
filenameInput.Text = "";
filenameInput.OnTextEdited();
}
return true;
};
var frameContainer = panel.GetOrNull("FRAME_SELECTOR");
if (frameContainer != null)

View File

@@ -114,11 +114,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
&& editor.CurrentBrush == editor.DefaultBrush
&& Game.RunTime > lastScrollTime + scrollVisibleTimeout;
actorIDField.OnEscKey = _ =>
{
actorIDField.YieldKeyboardFocus();
return true;
};
actorIDField.OnEscKey = _ => actorIDField.YieldKeyboardFocus();
actorIDField.OnTextEdited = () =>
{

View File

@@ -46,8 +46,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SearchTextField = widget.Get<TextFieldWidget>("SEARCH_TEXTFIELD");
SearchTextField.OnEscKey = _ =>
{
SearchTextField.Text = "";
if (string.IsNullOrEmpty(SearchTextField.Text))
SearchTextField.YieldKeyboardFocus();
else
{
SearchTextField.Text = "";
SearchTextField.OnTextEdited();
}
return true;
};

View File

@@ -436,7 +436,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return true;
};
chatTextField.OnEscKey = _ => { chatTextField.Text = ""; return true; };
chatTextField.OnEscKey = _ => chatTextField.YieldKeyboardFocus();
lobbyChatPanel = lobby.Get<ScrollPanelWidget>("CHAT_DISPLAY");
chatTemplate = lobbyChatPanel.Get("CHAT_TEMPLATE");