diff --git a/CHANGELOG.md b/CHANGELOG.md index adfb5061da..3b03e85b50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Refactored Windows state/flag-setting code. - On Windows, hiding the cursor no longer hides the cursor for all Winit windows - just the one `hide_cursor` was called on. - On Windows, cursor grabs used to get perpetually canceled when the grabbing window lost focus. Now, cursor grabs automatically get re-initialized when the window regains focus and the mouse moves over the client area. +- On Windows, only vertical mouse wheel events were handled. Now, horizontal mouse wheel events are also handled. # Version 0.18.1 (2018-12-30) diff --git a/src/platform/windows/events_loop.rs b/src/platform/windows/events_loop.rs index a888233908..252172e0ba 100644 --- a/src/platform/windows/events_loop.rs +++ b/src/platform/windows/events_loop.rs @@ -711,6 +711,22 @@ unsafe fn callback_inner( 0 }, + winuser::WM_MOUSEHWHEEL => { + use events::MouseScrollDelta::LineDelta; + use events::TouchPhase; + + let value = (wparam >> 16) as i16; + let value = value as i32; + let value = value as f32 / winuser::WHEEL_DELTA as f32; + + send_event(Event::WindowEvent { + window_id: SuperWindowId(WindowId(window)), + event: WindowEvent::MouseWheel { device_id: DEVICE_ID, delta: LineDelta(value, 0.0), phase: TouchPhase::Moved, modifiers: event::get_key_mods() }, + }); + + 0 + }, + winuser::WM_KEYDOWN | winuser::WM_SYSKEYDOWN => { use events::ElementState::Pressed; use events::VirtualKeyCode;