|
|
@ -77,16 +77,21 @@ namespace Perspex.Input |
|
|
LeaveWindow(mouse, e.Root); |
|
|
LeaveWindow(mouse, e.Root); |
|
|
break; |
|
|
break; |
|
|
case RawMouseEventType.LeftButtonDown: |
|
|
case RawMouseEventType.LeftButtonDown: |
|
|
MouseDown(mouse, e.Timestamp, e.Root, e.Position); |
|
|
case RawMouseEventType.RightButtonDown: |
|
|
|
|
|
MouseDown(mouse, e.Timestamp, e.Root, e.Position, |
|
|
|
|
|
e.Type == RawMouseEventType.LeftButtonDown ? MouseButton.Left : MouseButton.Right, |
|
|
|
|
|
e.InputModifiers); |
|
|
break; |
|
|
break; |
|
|
case RawMouseEventType.LeftButtonUp: |
|
|
case RawMouseEventType.LeftButtonUp: |
|
|
MouseUp(mouse, e.Root, e.Position); |
|
|
case RawMouseEventType.RightButtonUp: |
|
|
|
|
|
MouseUp(mouse, e.Root, e.Position, |
|
|
|
|
|
e.Type == RawMouseEventType.LeftButtonUp ? MouseButton.Left : MouseButton.Right, e.InputModifiers); |
|
|
break; |
|
|
break; |
|
|
case RawMouseEventType.Move: |
|
|
case RawMouseEventType.Move: |
|
|
MouseMove(mouse, e.Root, e.Position); |
|
|
MouseMove(mouse, e.Root, e.Position, e.InputModifiers); |
|
|
break; |
|
|
break; |
|
|
case RawMouseEventType.Wheel: |
|
|
case RawMouseEventType.Wheel: |
|
|
MouseWheel(mouse, e.Root, e.Position, ((RawMouseWheelEventArgs)e).Delta); |
|
|
MouseWheel(mouse, e.Root, e.Position, ((RawMouseWheelEventArgs)e).Delta, e.InputModifiers); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -96,7 +101,7 @@ namespace Perspex.Input |
|
|
ClearPointerOver(this, root); |
|
|
ClearPointerOver(this, root); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void MouseDown(IMouseDevice device, uint timestamp, IInputElement root, Point p) |
|
|
private void MouseDown(IMouseDevice device, uint timestamp, IInputElement root, Point p, MouseButton button, InputModifiers inputModifiers) |
|
|
{ |
|
|
{ |
|
|
var hit = HitTest(root, p); |
|
|
var hit = HitTest(root, p); |
|
|
|
|
|
|
|
|
@ -125,6 +130,8 @@ namespace Perspex.Input |
|
|
RoutedEvent = InputElement.PointerPressedEvent, |
|
|
RoutedEvent = InputElement.PointerPressedEvent, |
|
|
Source = source, |
|
|
Source = source, |
|
|
ClickCount = _clickCount, |
|
|
ClickCount = _clickCount, |
|
|
|
|
|
MouseButton = button, |
|
|
|
|
|
InputModifiers = inputModifiers |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
source.RaiseEvent(e); |
|
|
source.RaiseEvent(e); |
|
|
@ -132,7 +139,7 @@ namespace Perspex.Input |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void MouseMove(IMouseDevice device, IInputRoot root, Point p) |
|
|
private void MouseMove(IMouseDevice device, IInputRoot root, Point p, InputModifiers inputModifiers) |
|
|
{ |
|
|
{ |
|
|
IInputElement source; |
|
|
IInputElement source; |
|
|
|
|
|
|
|
|
@ -152,10 +159,11 @@ namespace Perspex.Input |
|
|
Device = this, |
|
|
Device = this, |
|
|
RoutedEvent = InputElement.PointerMovedEvent, |
|
|
RoutedEvent = InputElement.PointerMovedEvent, |
|
|
Source = source, |
|
|
Source = source, |
|
|
|
|
|
InputModifiers = inputModifiers |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void MouseUp(IMouseDevice device, IInputRoot root, Point p) |
|
|
private void MouseUp(IMouseDevice device, IInputRoot root, Point p, MouseButton button, InputModifiers inputModifiers) |
|
|
{ |
|
|
{ |
|
|
var hit = HitTest(root, p); |
|
|
var hit = HitTest(root, p); |
|
|
|
|
|
|
|
|
@ -165,17 +173,19 @@ namespace Perspex.Input |
|
|
|
|
|
|
|
|
if (source != null) |
|
|
if (source != null) |
|
|
{ |
|
|
{ |
|
|
source.RaiseEvent(new PointerEventArgs |
|
|
source.RaiseEvent(new PointerReleasedEventArgs |
|
|
{ |
|
|
{ |
|
|
Device = this, |
|
|
Device = this, |
|
|
RoutedEvent = InputElement.PointerReleasedEvent, |
|
|
RoutedEvent = InputElement.PointerReleasedEvent, |
|
|
Source = source, |
|
|
Source = source, |
|
|
|
|
|
MouseButton = button, |
|
|
|
|
|
InputModifiers = inputModifiers |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void MouseWheel(IMouseDevice device, IInputRoot root, Point p, Vector delta) |
|
|
private void MouseWheel(IMouseDevice device, IInputRoot root, Point p, Vector delta, InputModifiers inputModifiers) |
|
|
{ |
|
|
{ |
|
|
var hit = HitTest(root, p); |
|
|
var hit = HitTest(root, p); |
|
|
|
|
|
|
|
|
@ -191,6 +201,7 @@ namespace Perspex.Input |
|
|
RoutedEvent = InputElement.PointerWheelChangedEvent, |
|
|
RoutedEvent = InputElement.PointerWheelChangedEvent, |
|
|
Source = source, |
|
|
Source = source, |
|
|
Delta = delta, |
|
|
Delta = delta, |
|
|
|
|
|
InputModifiers = inputModifiers |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|