Allows user to left click to end editing text and right click to change text back to its original and end editing.

This commit is contained in:
Chandler Cox
2022-11-29 21:30:17 -06:00
parent 5a50656249
commit 9b82860154
3 changed files with 30 additions and 0 deletions

View File

@@ -371,6 +371,7 @@ namespace FlaxEditor.GUI.Input
Parent = this, Parent = this,
Location = new Float2(split, 0), Location = new Float2(split, 0),
Size = new Float2(Height, TextBoxSize), Size = new Float2(Height, TextBoxSize),
CanEndEditByClick = true,
}; };
_textBox.EditEnd += OnTextBoxEditEnd; _textBox.EditEnd += OnTextBoxEditEnd;
} }

View File

@@ -125,6 +125,7 @@ namespace FlaxEditor.GUI.Input
_min = min; _min = min;
_max = max; _max = max;
_slideSpeed = sliderSpeed; _slideSpeed = sliderSpeed;
CanEndEditByClick = true;
} }
/// <summary> /// <summary>
@@ -173,6 +174,7 @@ namespace FlaxEditor.GUI.Input
private void EndSliding() private void EndSliding()
{ {
_isSliding = false; _isSliding = false;
CanEndEditByClick = true;
EndMouseCapture(); EndMouseCapture();
if (_cursorChanged) if (_cursorChanged)
{ {
@@ -245,6 +247,7 @@ namespace FlaxEditor.GUI.Input
_startSlideLocation = location; _startSlideLocation = location;
_startSlideValue = _value; _startSlideValue = _value;
StartMouseCapture(true); StartMouseCapture(true);
CanEndEditByClick = false;
// Hide cursor and cache location // Hide cursor and cache location
Cursor = CursorType.Hidden; Cursor = CursorType.Hidden;

View File

@@ -139,6 +139,12 @@ namespace FlaxEngine.GUI
/// </summary> /// </summary>
public event Action<KeyboardKeys> KeyUp; public event Action<KeyboardKeys> KeyUp;
/// <summary>
/// Gets or sets a value indicating whether the text box can end edit via left click outside of the control
/// </summary>
[HideInEditor]
public bool CanEndEditByClick { get; set; } = false;
/// <summary> /// <summary>
/// Gets or sets a value indicating whether this is a multiline text box control. /// Gets or sets a value indicating whether this is a multiline text box control.
/// </summary> /// </summary>
@@ -1041,6 +1047,26 @@ namespace FlaxEngine.GUI
// Animate view offset // Animate view offset
_viewOffset = isDeltaSlow ? _targetViewOffset : Float2.Lerp(_viewOffset, _targetViewOffset, deltaTime * 20.0f); _viewOffset = isDeltaSlow ? _targetViewOffset : Float2.Lerp(_viewOffset, _targetViewOffset, deltaTime * 20.0f);
// Clicking outside of the text box will end text editing. Left will keep the value, right will restore original value
if (_isEditing && CanEndEditByClick)
{
if (!IsMouseOver && RootWindow.ContainsFocus)
{
if (Input.GetMouseButtonDown(MouseButton.Left))
{
RemoveFocus();
}
else if (Input.GetMouseButtonDown(MouseButton.Right))
{
// Restore text from start
SetSelection(-1);
_text = _onStartEditValue;
OnTextChanged();
RemoveFocus();
}
}
}
base.Update(deltaTime); base.Update(deltaTime);
} }