Browse Source

Cast wParam to long not int.

As in some rare cases it was overflowing. Fixes #607.
pull/649/head
Steven Kirk 10 years ago
parent
commit
fb6ff13194
  1. 6
      src/Windows/Avalonia.Win32/WindowImpl.cs

6
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -497,7 +497,7 @@ namespace Avalonia.Win32
timestamp,
_owner,
ScreenToClient(DipFromLParam(lParam)),
new Vector(0, ((int)wParam >> 16) / wheelDelta), GetMouseModifiers(wParam));
new Vector(0, ((long)wParam >> 16) / wheelDelta), GetMouseModifiers(wParam));
break;
case UnmanagedMethods.WindowsMessage.WM_MOUSEHWHEEL:
@ -506,7 +506,7 @@ namespace Avalonia.Win32
timestamp,
_owner,
ScreenToClient(DipFromLParam(lParam)),
new Vector(-((int)wParam >> 16) / wheelDelta,0), GetMouseModifiers(wParam));
new Vector(-((long)wParam >> 16) / wheelDelta,0), GetMouseModifiers(wParam));
break;
case UnmanagedMethods.WindowsMessage.WM_MOUSELEAVE:
@ -578,7 +578,7 @@ namespace Avalonia.Win32
static InputModifiers GetMouseModifiers(IntPtr wParam)
{
var keys = (UnmanagedMethods.ModifierKeys)wParam.ToInt32();
var keys = (UnmanagedMethods.ModifierKeys)wParam.ToInt64();
var modifiers = WindowsKeyboardDevice.Instance.Modifiers;
if (keys.HasFlag(UnmanagedMethods.ModifierKeys.MK_LBUTTON))
modifiers |= InputModifiers.LeftMouseButton;

Loading…
Cancel
Save