diff --git a/Source/Engine/UI/GUI/Common/TextBoxBase.cs b/Source/Engine/UI/GUI/Common/TextBoxBase.cs
index a4ccbe5d2..60b201986 100644
--- a/Source/Engine/UI/GUI/Common/TextBoxBase.cs
+++ b/Source/Engine/UI/GUI/Common/TextBoxBase.cs
@@ -11,6 +11,11 @@ namespace FlaxEngine.GUI
///
public abstract class TextBoxBase : ContainerControl
{
+ ///
+ /// The delete control character (used for text filtering).
+ ///
+ protected const char DelChar = (char)0x7F;
+
///
/// The text separators (used for words skipping).
///
@@ -351,6 +356,10 @@ namespace FlaxEngine.GUI
if (value.IndexOf('\r') != -1)
value = value.Replace("\r", "");
+ // Filter text (handle backspace control character)
+ if(value.IndexOf(DelChar) != -1)
+ value = value.Replace(DelChar.ToString(), "");
+
// Clamp length
if (value.Length > MaxLength)
value = value.Substring(0, MaxLength);
@@ -673,6 +682,8 @@ namespace FlaxEngine.GUI
// Filter text
if (str.IndexOf('\r') != -1)
str = str.Replace("\r", "");
+ if (str.IndexOf(DelChar) != -1)
+ str = str.Replace(DelChar.ToString(), "");
if (!IsMultiline && str.IndexOf('\n') != -1)
str = str.Replace("\n", "");
@@ -1327,6 +1338,15 @@ namespace FlaxEngine.GUI
if (IsReadOnly)
return true;
+ if (ctrDown)
+ {
+ int prevWordBegin = FindPrevWordBegin();
+ _text = _text.Remove(prevWordBegin, CaretPosition-prevWordBegin);
+ SetSelection(prevWordBegin);
+ OnTextChanged();
+ return true;
+ }
+
int left = SelectionLeft;
if (HasSelection)
{