|
|
|
@ -30,6 +30,7 @@ namespace Avalonia.Win32 |
|
|
|
private IntPtr _hwnd; |
|
|
|
private bool _multitouch; |
|
|
|
private TouchDevice _touchDevice = new TouchDevice(); |
|
|
|
private MouseDevice _mouseDevice = new WindowsMouseDevice(); |
|
|
|
private IInputRoot _owner; |
|
|
|
private ManagedDeferredRendererLock _rendererLock = new ManagedDeferredRendererLock(); |
|
|
|
private bool _trackingMouse; |
|
|
|
@ -205,7 +206,7 @@ namespace Avalonia.Win32 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public IMouseDevice MouseDevice => WindowsMouseDevice.Instance; |
|
|
|
public IMouseDevice MouseDevice => _mouseDevice; |
|
|
|
|
|
|
|
public WindowState WindowState |
|
|
|
{ |
|
|
|
@ -333,7 +334,7 @@ namespace Avalonia.Win32 |
|
|
|
|
|
|
|
public void BeginMoveDrag(PointerPressedEventArgs e) |
|
|
|
{ |
|
|
|
WindowsMouseDevice.Instance.Capture(null); |
|
|
|
_mouseDevice.Capture(null); |
|
|
|
UnmanagedMethods.DefWindowProc(_hwnd, (int)UnmanagedMethods.WindowsMessage.WM_NCLBUTTONDOWN, |
|
|
|
new IntPtr((int)UnmanagedMethods.HitTestValues.HTCAPTION), IntPtr.Zero); |
|
|
|
e.Pointer.Capture(null); |
|
|
|
@ -356,7 +357,7 @@ namespace Avalonia.Win32 |
|
|
|
#if USE_MANAGED_DRAG
|
|
|
|
_managedDrag.BeginResizeDrag(edge, ScreenToClient(MouseDevice.Position)); |
|
|
|
#else
|
|
|
|
WindowsMouseDevice.Instance.Capture(null); |
|
|
|
_mouseDevice.Capture(null); |
|
|
|
UnmanagedMethods.DefWindowProc(_hwnd, (int)UnmanagedMethods.WindowsMessage.WM_NCLBUTTONDOWN, |
|
|
|
new IntPtr((int)EdgeDic[edge]), IntPtr.Zero); |
|
|
|
#endif
|
|
|
|
@ -437,9 +438,7 @@ namespace Avalonia.Win32 |
|
|
|
uint timestamp = unchecked((uint)UnmanagedMethods.GetMessageTime()); |
|
|
|
|
|
|
|
RawInputEventArgs e = null; |
|
|
|
|
|
|
|
WindowsMouseDevice.Instance.CurrentWindow = this; |
|
|
|
|
|
|
|
|
|
|
|
switch ((UnmanagedMethods.WindowsMessage)msg) |
|
|
|
{ |
|
|
|
case UnmanagedMethods.WindowsMessage.WM_ACTIVATE: |
|
|
|
@ -485,6 +484,8 @@ namespace Avalonia.Win32 |
|
|
|
_parent._disabledBy.Remove(this); |
|
|
|
_parent.UpdateEnabled(); |
|
|
|
} |
|
|
|
_mouseDevice.Dispose(); |
|
|
|
_touchDevice?.Dispose(); |
|
|
|
//Free other resources
|
|
|
|
Dispose(); |
|
|
|
return IntPtr.Zero; |
|
|
|
@ -542,7 +543,7 @@ namespace Avalonia.Win32 |
|
|
|
if(ShouldIgnoreTouchEmulatedMessage()) |
|
|
|
break; |
|
|
|
e = new RawPointerEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
msg == (int)UnmanagedMethods.WindowsMessage.WM_LBUTTONDOWN |
|
|
|
@ -559,7 +560,7 @@ namespace Avalonia.Win32 |
|
|
|
if(ShouldIgnoreTouchEmulatedMessage()) |
|
|
|
break; |
|
|
|
e = new RawPointerEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
msg == (int)UnmanagedMethods.WindowsMessage.WM_LBUTTONUP |
|
|
|
@ -587,7 +588,7 @@ namespace Avalonia.Win32 |
|
|
|
} |
|
|
|
|
|
|
|
e = new RawPointerEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
RawPointerEventType.Move, |
|
|
|
@ -597,7 +598,7 @@ namespace Avalonia.Win32 |
|
|
|
|
|
|
|
case UnmanagedMethods.WindowsMessage.WM_MOUSEWHEEL: |
|
|
|
e = new RawMouseWheelEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
PointToClient(PointFromLParam(lParam)), |
|
|
|
@ -606,7 +607,7 @@ namespace Avalonia.Win32 |
|
|
|
|
|
|
|
case UnmanagedMethods.WindowsMessage.WM_MOUSEHWHEEL: |
|
|
|
e = new RawMouseWheelEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
PointToClient(PointFromLParam(lParam)), |
|
|
|
@ -616,7 +617,7 @@ namespace Avalonia.Win32 |
|
|
|
case UnmanagedMethods.WindowsMessage.WM_MOUSELEAVE: |
|
|
|
_trackingMouse = false; |
|
|
|
e = new RawPointerEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
RawPointerEventType.LeaveWindow, |
|
|
|
@ -627,7 +628,7 @@ namespace Avalonia.Win32 |
|
|
|
case UnmanagedMethods.WindowsMessage.WM_NCRBUTTONDOWN: |
|
|
|
case UnmanagedMethods.WindowsMessage.WM_NCMBUTTONDOWN: |
|
|
|
e = new RawPointerEventArgs( |
|
|
|
WindowsMouseDevice.Instance, |
|
|
|
_mouseDevice, |
|
|
|
timestamp, |
|
|
|
_owner, |
|
|
|
msg == (int)UnmanagedMethods.WindowsMessage.WM_NCLBUTTONDOWN |
|
|
|
|