diff options
-rw-r--r-- | native/src/user_interface.rs | 11 | ||||
-rw-r--r-- | winit/src/conversion.rs | 6 |
2 files changed, 15 insertions, 2 deletions
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 5d9221e9..88ffd6d6 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -188,8 +188,15 @@ where let mut messages = Vec::new(); for event in events { - if let Event::Mouse(mouse::Event::CursorMoved { x, y }) = event { - self.cursor_position = Point::new(x, y); + match event { + Event::Mouse(mouse::Event::CursorMoved { x, y }) => { + self.cursor_position = Point::new(x, y); + } + Event::Mouse(mouse::Event::CursorLeft) => { + // TODO: Encode cursor availability + self.cursor_position = Point::new(-1.0, -1.0); + } + _ => {} } self.root.widget.on_event( diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index eaa26ace..78686424 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -27,6 +27,12 @@ pub fn window_event( height: logical_size.height, })) } + WindowEvent::CursorEntered { .. } => { + Some(Event::Mouse(mouse::Event::CursorEntered)) + } + WindowEvent::CursorLeft { .. } => { + Some(Event::Mouse(mouse::Event::CursorLeft)) + } WindowEvent::CursorMoved { position, .. } => { let position = position.to_logical::<f64>(scale_factor); |