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

Loading…
Cancel
Save