On Windows, fix CursorMoved(0, 0) getting sent on focus (#819)

* On Windows, fix CursorMoved(0, 0) getting sent on focus

* Add changelog entry
This commit is contained in:
Osspial 2019-03-19 22:19:41 -04:00 committed by Victor Berger
parent fc481b6d6d
commit 17a240cd43
2 changed files with 3 additions and 11 deletions

View file

@ -38,6 +38,8 @@
- Rename `MonitorId` to `MonitorHandle`. - Rename `MonitorId` to `MonitorHandle`.
- Removed `serde` implementations from `ControlFlow`. - Removed `serde` implementations from `ControlFlow`.
- On Windows, fix `CursorMoved(0, 0)` getting dispatched on window focus.
# Version 0.19.0 (2019-03-06) # Version 0.19.0 (2019-03-06)
- On X11, we will use the faster `XRRGetScreenResourcesCurrent` function instead of `XRRGetScreenResources` when available. - On X11, we will use the faster `XRRGetScreenResourcesCurrent` function instead of `XRRGetScreenResources` when available.

View file

@ -1335,22 +1335,12 @@ unsafe extern "system" fn public_window_callback<T>(
} }
winuser::WM_SETFOCUS => { winuser::WM_SETFOCUS => {
use event::WindowEvent::{Focused, CursorMoved}; use event::WindowEvent::Focused;
subclass_input.send_event(Event::WindowEvent { subclass_input.send_event(Event::WindowEvent {
window_id: RootWindowId(WindowId(window)), window_id: RootWindowId(WindowId(window)),
event: Focused(true), event: Focused(true),
}); });
let x = windowsx::GET_X_LPARAM(lparam) as f64;
let y = windowsx::GET_Y_LPARAM(lparam) as f64;
let dpi_factor = get_hwnd_scale_factor(window);
let position = LogicalPosition::from_physical((x, y), dpi_factor);
subclass_input.send_event(Event::WindowEvent {
window_id: RootWindowId(WindowId(window)),
event: CursorMoved { device_id: DEVICE_ID, position, modifiers: event::get_key_mods() },
});
0 0
}, },