diff options
author | 2020-08-25 10:58:15 +0200 | |
---|---|---|
committer | 2020-08-25 10:58:15 +0200 | |
commit | fb015a85d22a7c4632bd251127a89259bfd0c346 (patch) | |
tree | 6b5f960227e8b9f5233f89da7f05fa6257395183 | |
parent | 56273c5a3cd60a9722af7015ebc59341a1e75f2c (diff) | |
parent | 72f89ba77f45e5345ef863d5e75b99895419f583 (diff) | |
download | iced-fb015a85d22a7c4632bd251127a89259bfd0c346.tar.gz iced-fb015a85d22a7c4632bd251127a89259bfd0c346.tar.bz2 iced-fb015a85d22a7c4632bd251127a89259bfd0c346.zip |
Merge pull request #496 from hecrj/fix/cursor-position-on-leave
Fix cursor position after a `CursorLeft` event
-rw-r--r-- | winit/src/application.rs | 5 | ||||
-rw-r--r-- | winit/src/conversion.rs | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index 1fa282a1..73dad398 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -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; } diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 3a8f54f5..638787ab 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -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); |