Fix cursor position after a `CursorLeft` event

This commit is contained in:
Héctor Ramón Jiménez 2020-08-25 01:39:54 +02:00
parent 2ce5df0844
commit 72f89ba77f
2 changed files with 11 additions and 0 deletions

View File

@ -148,6 +148,7 @@ pub fn run<A, E, C>(
.expect("Open window");
let clipboard = Clipboard::new(&window);
// TODO: Encode cursor availability in the type-system
let mut cursor_position = winit::dpi::PhysicalPosition::new(-1.0, -1.0);
let mut mouse_interaction = mouse::Interaction::default();
let mut modifiers = winit::event::ModifiersState::default();
@ -378,6 +379,10 @@ pub fn handle_window_event(
WindowEvent::CursorMoved { position, .. } => {
*cursor_position = *position;
}
WindowEvent::CursorLeft { .. } => {
// TODO: Encode cursor availability in the type-system
*cursor_position = winit::dpi::PhysicalPosition::new(-1.0, -1.0);
}
WindowEvent::ModifiersChanged(new_modifiers) => {
*modifiers = *new_modifiers;
}

View File

@ -40,6 +40,12 @@ pub fn window_event(
y: position.y as f32,
}))
}
WindowEvent::CursorEntered { .. } => {
Some(Event::Mouse(mouse::Event::CursorEntered))
}
WindowEvent::CursorLeft { .. } => {
Some(Event::Mouse(mouse::Event::CursorLeft))
}
WindowEvent::MouseInput { button, state, .. } => {
let button = mouse_button(*button);