|
|
@@ -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
|