Last active
August 29, 2015 14:11
-
-
Save SuperJMN/209f10e089d3ce304db1 to your computer and use it in GitHub Desktop.
Comparison
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected override void OnKeyDown(KeyEventArgs e) | |
{ | |
var modifiers = e.Device.Modifiers; | |
var key = e.Key; | |
if (IsNavigational(key)) | |
{ | |
var shouldSelectAlong = modifiers.HasFlag(ModifierKeys.Shift); | |
var isWordJumpEnabled = modifiers.HasFlag(ModifierKeys.Control); | |
this.MoveCaret(TranslateToDirection(key, modifiers), shouldSelectAlong, isWordJumpEnabled); | |
} | |
else if (IsTextInput(e, modifiers)) | |
{ | |
this.InsertText(e.Text); | |
} | |
else | |
{ | |
this.TryPerformSpecialInput(key, modifiers); | |
} | |
e.Handled = true; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected override void OnKeyDown(KeyEventArgs e) | |
{ | |
string text = this.Text ?? string.Empty; | |
int caretIndex = this.CaretIndex; | |
bool movement = false; | |
bool textEntered = false; | |
var modifiers = e.Device.Modifiers; | |
switch (e.Key) | |
{ | |
case Key.A: | |
if (modifiers == ModifierKeys.Control) | |
{ | |
this.SelectionStart = 0; | |
this.SelectionEnd = this.Text.Length; | |
} | |
break; | |
case Key.Left: | |
this.MoveHorizontal(-1, modifiers); | |
movement = true; | |
break; | |
case Key.Right: | |
this.MoveHorizontal(1, modifiers); | |
movement = true; | |
break; | |
case Key.Up: | |
this.MoveVertical(-1, modifiers); | |
movement = true; | |
break; | |
case Key.Down: | |
this.MoveVertical(1, modifiers); | |
movement = true; | |
break; | |
case Key.Home: | |
this.MoveHome(modifiers); | |
movement = true; | |
break; | |
case Key.End: | |
this.MoveEnd(modifiers); | |
movement = true; | |
break; | |
case Key.Back: | |
if (!this.DeleteSelection() && this.CaretIndex > 0) | |
{ | |
this.Text = text.Substring(0, caretIndex - 1) + text.Substring(caretIndex); | |
--this.CaretIndex; | |
} | |
break; | |
case Key.Delete: | |
if (!this.DeleteSelection() && caretIndex < text.Length) | |
{ | |
this.Text = text.Substring(0, caretIndex) + text.Substring(caretIndex + 1); | |
} | |
break; | |
case Key.Enter: | |
if (this.AcceptsReturn) | |
{ | |
goto default; | |
} | |
break; | |
case Key.Tab: | |
if (this.AcceptsTab) | |
{ | |
goto default; | |
} | |
break; | |
default: | |
if (!string.IsNullOrEmpty(e.Text)) | |
{ | |
this.DeleteSelection(); | |
caretIndex = this.CaretIndex; | |
text = this.Text; | |
this.Text = text.Substring(0, caretIndex) + e.Text + text.Substring(caretIndex); | |
++this.CaretIndex; | |
textEntered = true; | |
} | |
break; | |
} | |
if (movement && ((modifiers & ModifierKeys.Shift) != 0)) | |
{ | |
this.SelectionEnd = this.CaretIndex; | |
} | |
else if (movement || textEntered) | |
{ | |
this.SelectionStart = this.SelectionEnd = this.CaretIndex; | |
} | |
e.Handled = true; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment