Merge pull request #8680 from deniz1a/textfields
Some text field improvements.
This commit is contained in:
@@ -108,9 +108,29 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
panel.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => Game.Settings.Player.Color.RGB;
|
panel.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => Game.Settings.Player.Color.RGB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Action closeAssetBrowser = () =>
|
||||||
|
{
|
||||||
|
if (isVideoLoaded)
|
||||||
|
player.Stop();
|
||||||
|
Ui.CloseWindow();
|
||||||
|
onExit();
|
||||||
|
};
|
||||||
|
|
||||||
filenameInput = panel.Get<TextFieldWidget>("FILENAME_INPUT");
|
filenameInput = panel.Get<TextFieldWidget>("FILENAME_INPUT");
|
||||||
|
filenameInput.TakeKeyboardFocus();
|
||||||
filenameInput.OnTextEdited = () => ApplyFilter(filenameInput.Text);
|
filenameInput.OnTextEdited = () => ApplyFilter(filenameInput.Text);
|
||||||
filenameInput.OnEscKey = filenameInput.YieldKeyboardFocus;
|
filenameInput.OnEscKey = () =>
|
||||||
|
{
|
||||||
|
if (filenameInput.Text.Length == 0)
|
||||||
|
closeAssetBrowser();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filenameInput.Text = "";
|
||||||
|
filenameInput.OnTextEdited();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
var frameContainer = panel.GetOrNull("FRAME_SELECTOR");
|
var frameContainer = panel.GetOrNull("FRAME_SELECTOR");
|
||||||
if (frameContainer != null)
|
if (frameContainer != null)
|
||||||
@@ -218,13 +238,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
var closeButton = panel.GetOrNull<ButtonWidget>("CLOSE_BUTTON");
|
var closeButton = panel.GetOrNull<ButtonWidget>("CLOSE_BUTTON");
|
||||||
if (closeButton != null)
|
if (closeButton != null)
|
||||||
closeButton.OnClick = () =>
|
closeButton.OnClick = closeAssetBrowser;
|
||||||
{
|
|
||||||
if (isVideoLoaded)
|
|
||||||
player.Stop();
|
|
||||||
Ui.CloseWindow();
|
|
||||||
onExit();
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectNextFrame()
|
void SelectNextFrame()
|
||||||
|
|||||||
@@ -523,9 +523,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
chatLabel = lobby.Get<LabelWidget>("LABEL_CHATTYPE");
|
chatLabel = lobby.Get<LabelWidget>("LABEL_CHATTYPE");
|
||||||
var chatTextField = lobby.Get<TextFieldWidget>("CHAT_TEXTFIELD");
|
var chatTextField = lobby.Get<TextFieldWidget>("CHAT_TEXTFIELD");
|
||||||
|
|
||||||
chatTextField.TakeKeyboardFocus();
|
chatTextField.TakeKeyboardFocus();
|
||||||
|
|
||||||
chatTextField.OnEnterKey = () =>
|
chatTextField.OnEnterKey = () =>
|
||||||
{
|
{
|
||||||
if (chatTextField.Text.Length == 0)
|
if (chatTextField.Text.Length == 0)
|
||||||
@@ -538,6 +536,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
chatTextField.Text = "";
|
chatTextField.Text = "";
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
chatTextField.OnTabKey = () =>
|
chatTextField.OnTabKey = () =>
|
||||||
{
|
{
|
||||||
var previousText = chatTextField.Text;
|
var previousText = chatTextField.Text;
|
||||||
@@ -550,6 +549,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
chatTextField.OnEscKey = () => { chatTextField.Text = ""; return true; };
|
||||||
|
|
||||||
chatPanel = lobby.Get<ScrollPanelWidget>("CHAT_DISPLAY");
|
chatPanel = lobby.Get<ScrollPanelWidget>("CHAT_DISPLAY");
|
||||||
chatTemplate = chatPanel.Get("CHAT_TEMPLATE");
|
chatTemplate = chatPanel.Get("CHAT_TEMPLATE");
|
||||||
chatPanel.RemoveChildren();
|
chatPanel.RemoveChildren();
|
||||||
|
|||||||
@@ -257,23 +257,35 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
name.IsDisabled = () => orderManager.LocalClient.IsReady;
|
name.IsDisabled = () => orderManager.LocalClient.IsReady;
|
||||||
|
|
||||||
name.Text = c.Name;
|
name.Text = c.Name;
|
||||||
|
var escPressed = false;
|
||||||
name.OnLoseFocus = () =>
|
name.OnLoseFocus = () =>
|
||||||
{
|
{
|
||||||
|
if (escPressed)
|
||||||
|
{
|
||||||
|
escPressed = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
name.Text = name.Text.Trim();
|
name.Text = name.Text.Trim();
|
||||||
if (name.Text.Length == 0)
|
if (name.Text.Length == 0)
|
||||||
name.Text = c.Name;
|
name.Text = c.Name;
|
||||||
|
else if (name.Text != c.Name)
|
||||||
if (name.Text == c.Name)
|
{
|
||||||
return;
|
name.Text = Settings.SanitizedPlayerName(name.Text);
|
||||||
|
orderManager.IssueOrder(Order.Command("name " + name.Text));
|
||||||
name.Text = Settings.SanitizedPlayerName(name.Text);
|
Game.Settings.Player.Name = name.Text;
|
||||||
|
Game.Settings.Save();
|
||||||
orderManager.IssueOrder(Order.Command("name " + name.Text));
|
}
|
||||||
Game.Settings.Player.Name = name.Text;
|
|
||||||
Game.Settings.Save();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
name.OnEnterKey = () => { name.YieldKeyboardFocus(); return true; };
|
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)
|
public static void SetupNameWidget(Widget parent, Session.Slot s, Session.Client c)
|
||||||
|
|||||||
@@ -191,14 +191,30 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
var frameLimitTextfield = panel.Get<TextFieldWidget>("FRAME_LIMIT_TEXTFIELD");
|
var frameLimitTextfield = panel.Get<TextFieldWidget>("FRAME_LIMIT_TEXTFIELD");
|
||||||
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
|
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
|
||||||
|
var escPressed = false;
|
||||||
frameLimitTextfield.OnLoseFocus = () =>
|
frameLimitTextfield.OnLoseFocus = () =>
|
||||||
{
|
{
|
||||||
|
if (escPressed)
|
||||||
|
{
|
||||||
|
escPressed = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int fps;
|
int fps;
|
||||||
Exts.TryParseIntegerInvariant(frameLimitTextfield.Text, out fps);
|
Exts.TryParseIntegerInvariant(frameLimitTextfield.Text, out fps);
|
||||||
ds.MaxFramerate = fps.Clamp(1, 1000);
|
ds.MaxFramerate = fps.Clamp(1, 1000);
|
||||||
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
|
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
|
||||||
};
|
};
|
||||||
|
|
||||||
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
|
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
|
||||||
|
frameLimitTextfield.OnEscKey = () =>
|
||||||
|
{
|
||||||
|
frameLimitTextfield.Text = ds.MaxFramerate.ToString();
|
||||||
|
escPressed = true;
|
||||||
|
frameLimitTextfield.YieldKeyboardFocus();
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
frameLimitTextfield.IsDisabled = () => !ds.CapFramerate;
|
frameLimitTextfield.IsDisabled = () => !ds.CapFramerate;
|
||||||
|
|
||||||
// Player profile
|
// Player profile
|
||||||
@@ -207,11 +223,31 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
var nameTextfield = panel.Get<TextFieldWidget>("PLAYERNAME");
|
var nameTextfield = panel.Get<TextFieldWidget>("PLAYERNAME");
|
||||||
nameTextfield.IsDisabled = () => worldRenderer.World.Type != WorldType.Shellmap;
|
nameTextfield.IsDisabled = () => worldRenderer.World.Type != WorldType.Shellmap;
|
||||||
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
||||||
nameTextfield.OnEnterKey = () => { nameTextfield.YieldKeyboardFocus(); return true; };
|
|
||||||
nameTextfield.OnLoseFocus = () =>
|
nameTextfield.OnLoseFocus = () =>
|
||||||
{
|
{
|
||||||
nameTextfield.Text = Settings.SanitizedPlayerName(nameTextfield.Text);
|
if (escPressed)
|
||||||
ps.Name = nameTextfield.Text;
|
{
|
||||||
|
escPressed = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
nameTextfield.Text = nameTextfield.Text.Trim();
|
||||||
|
if (nameTextfield.Text.Length == 0)
|
||||||
|
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nameTextfield.Text = Settings.SanitizedPlayerName(nameTextfield.Text);
|
||||||
|
ps.Name = nameTextfield.Text;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
nameTextfield.OnEnterKey = () => { nameTextfield.YieldKeyboardFocus(); return true; };
|
||||||
|
nameTextfield.OnEscKey = () =>
|
||||||
|
{
|
||||||
|
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
||||||
|
escPressed = true;
|
||||||
|
nameTextfield.YieldKeyboardFocus();
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var colorPreview = panel.Get<ColorPreviewManagerWidget>("COLOR_MANAGER");
|
var colorPreview = panel.Get<ColorPreviewManagerWidget>("COLOR_MANAGER");
|
||||||
@@ -477,16 +513,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
BindHotkeyPref(kv, ks, developerTemplate, hotkeyList);
|
BindHotkeyPref(kv, ks, developerTemplate, hotkeyList);
|
||||||
}
|
}
|
||||||
|
|
||||||
return () =>
|
return () => { };
|
||||||
{
|
|
||||||
// Remove focus from the selected hotkey widget
|
|
||||||
// This is a bit of a hack, but works
|
|
||||||
if (Ui.KeyboardFocusWidget != null && panel.GetOrNull(Ui.KeyboardFocusWidget.Id) != null)
|
|
||||||
{
|
|
||||||
Ui.KeyboardFocusWidget.YieldKeyboardFocus();
|
|
||||||
Ui.KeyboardFocusWidget = null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Action ResetInputPanel(Widget panel)
|
Action ResetInputPanel(Widget panel)
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
bool wasDisabled;
|
bool wasDisabled;
|
||||||
public override void Tick()
|
public override void Tick()
|
||||||
{
|
{
|
||||||
// Remove the blicking cursor when disabled
|
// Remove the blinking cursor when disabled
|
||||||
var isDisabled = IsDisabled();
|
var isDisabled = IsDisabled();
|
||||||
if (isDisabled != wasDisabled)
|
if (isDisabled != wasDisabled)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user