Browse Source

Added KeyUp event.

pull/58/head
Steven Kirk 11 years ago
parent
commit
3ac8bdcf37
  1. 16
      Perspex.Input/InputElement.cs
  2. 6
      Perspex.Input/KeyboardDevice.cs
  3. 11
      Windows/Perspex.Win32/WindowImpl.cs

16
Perspex.Input/InputElement.cs

@ -46,6 +46,11 @@ namespace Perspex.Input
"KeyDown",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
public static readonly RoutedEvent<KeyEventArgs> KeyUpEvent =
RoutedEvent.Register<InputElement, KeyEventArgs>(
"KeyUp",
RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
public static readonly RoutedEvent<PointerEventArgs> PointerEnterEvent =
RoutedEvent.Register<InputElement, PointerEventArgs>("PointerEnter", RoutingStrategies.Direct);
@ -79,6 +84,7 @@ namespace Perspex.Input
GotFocusEvent.AddClassHandler<InputElement>(x => x.OnGotFocus);
LostFocusEvent.AddClassHandler<InputElement>(x => x.OnLostFocus);
KeyDownEvent.AddClassHandler<InputElement>(x => x.OnKeyDown);
KeyDownEvent.AddClassHandler<InputElement>(x => x.OnKeyUp);
PointerEnterEvent.AddClassHandler<InputElement>(x => x.OnPointerEnter);
PointerLeaveEvent.AddClassHandler<InputElement>(x => x.OnPointerLeave);
PointerMovedEvent.AddClassHandler<InputElement>(x => x.OnPointerMoved);
@ -105,6 +111,12 @@ namespace Perspex.Input
remove { this.RemoveHandler(KeyDownEvent, value); }
}
public event EventHandler<KeyEventArgs> KeyUp
{
add { this.AddHandler(KeyUpEvent, value); }
remove { this.RemoveHandler(KeyUpEvent, value); }
}
public event EventHandler<PointerEventArgs> PointerEnter
{
add { this.AddHandler(PointerEnterEvent, value); }
@ -243,6 +255,10 @@ namespace Perspex.Input
}
}
protected virtual void OnKeyUp(KeyEventArgs e)
{
}
protected virtual void OnPointerEnter(PointerEventArgs e)
{
this.IsPointerOver = true;

6
Perspex.Input/KeyboardDevice.cs

@ -83,9 +83,13 @@ namespace Perspex.Input
switch (e.Type)
{
case RawKeyEventType.KeyDown:
case RawKeyEventType.KeyUp:
var routedEvent = e.Type == RawKeyEventType.KeyDown ?
InputElement.KeyDownEvent : InputElement.KeyUpEvent;
KeyEventArgs ev = new KeyEventArgs
{
RoutedEvent = InputElement.KeyDownEvent,
RoutedEvent = routedEvent,
Device = this,
Key = e.Key,
Text = e.Text,

11
Windows/Perspex.Win32/WindowImpl.cs

@ -256,6 +256,17 @@ namespace Perspex.Win32
WindowsKeyboardDevice.Instance.StringFromVirtualKey((uint)wParam));
break;
case UnmanagedMethods.WindowsMessage.WM_KEYUP:
case UnmanagedMethods.WindowsMessage.WM_SYSKEYUP:
WindowsKeyboardDevice.Instance.UpdateKeyStates();
e = new RawKeyEventArgs(
WindowsKeyboardDevice.Instance,
timestamp,
RawKeyEventType.KeyUp,
KeyInterop.KeyFromVirtualKey((int)wParam),
WindowsKeyboardDevice.Instance.StringFromVirtualKey((uint)wParam));
break;
case UnmanagedMethods.WindowsMessage.WM_LBUTTONDOWN:
e = new RawMouseEventArgs(
WindowsMouseDevice.Instance,

Loading…
Cancel
Save