Browse Source

Merge branch 'kekekeks-textbox-fix'

pull/116/head
Steven Kirk 11 years ago
parent
commit
0bbd44c27b
  1. 21
      src/Perspex.Controls/TextBox.cs
  2. 9
      src/Windows/Perspex.Win32/WindowImpl.cs

21
src/Perspex.Controls/TextBox.cs

@ -130,18 +130,22 @@ namespace Perspex.Controls
protected override void OnTextInput(TextInputEventArgs e) protected override void OnTextInput(TextInputEventArgs e)
{ {
this.HandleTextInput(e.Text);
}
private void HandleTextInput(string input)
{
string text = this.Text ?? string.Empty; string text = this.Text ?? string.Empty;
int caretIndex = this.CaretIndex; int caretIndex = this.CaretIndex;
if (!string.IsNullOrEmpty(e.Text)) if (!string.IsNullOrEmpty(input))
{ {
this.DeleteSelection(); this.DeleteSelection();
caretIndex = this.CaretIndex; caretIndex = this.CaretIndex;
text = this.Text ?? string.Empty; text = this.Text ?? string.Empty;
this.Text = text.Substring(0, caretIndex) + e.Text + text.Substring(caretIndex); this.Text = text.Substring(0, caretIndex) + input + text.Substring(caretIndex);
++this.CaretIndex; ++this.CaretIndex;
this.SelectionStart = this.SelectionEnd = this.CaretIndex; this.SelectionStart = this.SelectionEnd = this.CaretIndex;
} }
base.OnTextInput(e);
} }
protected override void OnKeyDown(KeyEventArgs e) protected override void OnKeyDown(KeyEventArgs e)
@ -159,10 +163,6 @@ namespace Perspex.Controls
{ {
this.SelectAll(); this.SelectAll();
} }
else
{
goto default;
}
break; break;
@ -216,7 +216,7 @@ namespace Perspex.Controls
case Key.Enter: case Key.Enter:
if (this.AcceptsReturn) if (this.AcceptsReturn)
{ {
goto default; this.HandleTextInput("\r\n");
} }
break; break;
@ -224,7 +224,7 @@ namespace Perspex.Controls
case Key.Tab: case Key.Tab:
if (this.AcceptsTab) if (this.AcceptsTab)
{ {
goto default; this.HandleTextInput("\t");
} }
else else
{ {
@ -233,9 +233,6 @@ namespace Perspex.Controls
} }
break; break;
default:
break;
} }
if (movement && ((modifiers & ModifierKeys.Shift) != 0)) if (movement && ((modifiers & ModifierKeys.Shift) != 0))

9
src/Windows/Perspex.Win32/WindowImpl.cs

@ -269,8 +269,13 @@ namespace Perspex.Win32
KeyInterop.KeyFromVirtualKey((int)wParam)); KeyInterop.KeyFromVirtualKey((int)wParam));
break; break;
case UnmanagedMethods.WindowsMessage.WM_CHAR: case UnmanagedMethods.WindowsMessage.WM_CHAR:
e = new RawTextInputEventArgs(WindowsKeyboardDevice.Instance, timestamp, // Ignore control chars
new string((char) wParam.ToInt32(), 1)); if (wParam.ToInt32() > 32)
{
e = new RawTextInputEventArgs(WindowsKeyboardDevice.Instance, timestamp,
new string((char) wParam.ToInt32(), 1));
}
break; break;
case UnmanagedMethods.WindowsMessage.WM_LBUTTONDOWN: case UnmanagedMethods.WindowsMessage.WM_LBUTTONDOWN:
e = new RawMouseEventArgs( e = new RawMouseEventArgs(

Loading…
Cancel
Save