Browse Source

Merge branch 'master' into fixes/select-all-unselecting-items

pull/2402/head
Steven Kirk 7 years ago
committed by GitHub
parent
commit
2a28f067bd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      src/Avalonia.Input/MouseDevice.cs

27
src/Avalonia.Input/MouseDevice.cs

@ -108,11 +108,11 @@ namespace Avalonia.Input
{ {
if (Captured == null) if (Captured == null)
{ {
SetPointerOver(this, root, clientPoint); SetPointerOver(this, root, clientPoint, InputModifiers.None);
} }
else else
{ {
SetPointerOver(this, root, Captured); SetPointerOver(this, root, Captured, InputModifiers.None);
} }
} }
} }
@ -128,7 +128,7 @@ namespace Avalonia.Input
switch (e.Type) switch (e.Type)
{ {
case RawMouseEventType.LeaveWindow: case RawMouseEventType.LeaveWindow:
LeaveWindow(mouse, e.Root); LeaveWindow(mouse, e.Root, e.InputModifiers);
break; break;
case RawMouseEventType.LeftButtonDown: case RawMouseEventType.LeftButtonDown:
case RawMouseEventType.RightButtonDown: case RawMouseEventType.RightButtonDown:
@ -157,12 +157,12 @@ namespace Avalonia.Input
} }
} }
private void LeaveWindow(IMouseDevice device, IInputRoot root) private void LeaveWindow(IMouseDevice device, IInputRoot root, InputModifiers inputModifiers)
{ {
Contract.Requires<ArgumentNullException>(device != null); Contract.Requires<ArgumentNullException>(device != null);
Contract.Requires<ArgumentNullException>(root != null); Contract.Requires<ArgumentNullException>(root != null);
ClearPointerOver(this, root); ClearPointerOver(this, root, inputModifiers);
} }
private bool MouseDown(IMouseDevice device, ulong timestamp, IInputElement root, Point p, MouseButton button, InputModifiers inputModifiers) private bool MouseDown(IMouseDevice device, ulong timestamp, IInputElement root, Point p, MouseButton button, InputModifiers inputModifiers)
@ -218,11 +218,11 @@ namespace Avalonia.Input
if (Captured == null) if (Captured == null)
{ {
source = SetPointerOver(this, root, p); source = SetPointerOver(this, root, p, inputModifiers);
} }
else else
{ {
SetPointerOver(this, root, Captured); SetPointerOver(this, root, Captured, inputModifiers);
source = Captured; source = Captured;
} }
@ -306,7 +306,7 @@ namespace Avalonia.Input
return Captured ?? root.InputHitTest(p); return Captured ?? root.InputHitTest(p);
} }
private void ClearPointerOver(IPointerDevice device, IInputRoot root) private void ClearPointerOver(IPointerDevice device, IInputRoot root, InputModifiers inputModifiers)
{ {
Contract.Requires<ArgumentNullException>(device != null); Contract.Requires<ArgumentNullException>(device != null);
Contract.Requires<ArgumentNullException>(root != null); Contract.Requires<ArgumentNullException>(root != null);
@ -316,6 +316,7 @@ namespace Avalonia.Input
{ {
RoutedEvent = InputElement.PointerLeaveEvent, RoutedEvent = InputElement.PointerLeaveEvent,
Device = device, Device = device,
InputModifiers = inputModifiers
}; };
if (element!=null && !element.IsAttachedToVisualTree) if (element!=null && !element.IsAttachedToVisualTree)
@ -353,7 +354,7 @@ namespace Avalonia.Input
} }
} }
private IInputElement SetPointerOver(IPointerDevice device, IInputRoot root, Point p) private IInputElement SetPointerOver(IPointerDevice device, IInputRoot root, Point p, InputModifiers inputModifiers)
{ {
Contract.Requires<ArgumentNullException>(device != null); Contract.Requires<ArgumentNullException>(device != null);
Contract.Requires<ArgumentNullException>(root != null); Contract.Requires<ArgumentNullException>(root != null);
@ -364,18 +365,18 @@ namespace Avalonia.Input
{ {
if (element != null) if (element != null)
{ {
SetPointerOver(device, root, element); SetPointerOver(device, root, element, inputModifiers);
} }
else else
{ {
ClearPointerOver(device, root); ClearPointerOver(device, root, inputModifiers);
} }
} }
return element; return element;
} }
private void SetPointerOver(IPointerDevice device, IInputRoot root, IInputElement element) private void SetPointerOver(IPointerDevice device, IInputRoot root, IInputElement element, InputModifiers inputModifiers)
{ {
Contract.Requires<ArgumentNullException>(device != null); Contract.Requires<ArgumentNullException>(device != null);
Contract.Requires<ArgumentNullException>(root != null); Contract.Requires<ArgumentNullException>(root != null);
@ -383,7 +384,7 @@ namespace Avalonia.Input
IInputElement branch = null; IInputElement branch = null;
var e = new PointerEventArgs { Device = device, }; var e = new PointerEventArgs { Device = device, InputModifiers = inputModifiers };
var el = element; var el = element;
while (el != null) while (el != null)

Loading…
Cancel
Save