diff options
Diffstat (limited to 'native/src/input/mouse')
-rw-r--r-- | native/src/input/mouse/button.rs | 32 | ||||
-rw-r--r-- | native/src/input/mouse/event.rs | 44 |
2 files changed, 76 insertions, 0 deletions
diff --git a/native/src/input/mouse/button.rs b/native/src/input/mouse/button.rs new file mode 100644 index 00000000..6320d701 --- /dev/null +++ b/native/src/input/mouse/button.rs @@ -0,0 +1,32 @@ +/// The button of a mouse. +/// +/// If you are using [`winit`], consider enabling the `winit` feature to get +/// conversion implementations for free! +/// +/// [`winit`]: https://docs.rs/winit/0.20.0-alpha3/winit/ +#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] +pub enum Button { + /// The left mouse button. + Left, + + /// The right mouse button. + Right, + + /// The middle (wheel) button. + Middle, + + /// Some other button. + Other(u8), +} + +#[cfg(feature = "winit")] +impl From<winit::event::MouseButton> for super::Button { + fn from(mouse_button: winit::event::MouseButton) -> Self { + match mouse_button { + winit::event::MouseButton::Left => Button::Left, + winit::event::MouseButton::Right => Button::Right, + winit::event::MouseButton::Middle => Button::Middle, + winit::event::MouseButton::Other(other) => Button::Other(other), + } + } +} diff --git a/native/src/input/mouse/event.rs b/native/src/input/mouse/event.rs new file mode 100644 index 00000000..7b68208f --- /dev/null +++ b/native/src/input/mouse/event.rs @@ -0,0 +1,44 @@ +use super::Button; +use crate::input::ButtonState; + +/// A mouse event. +/// +/// _**Note:** This type is largely incomplete! If you need to track +/// additional events, feel free to [open an issue] and share your use case!_ +/// +/// [open an issue]: https://github.com/hecrj/iced/issues +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum Event { + /// The mouse cursor entered the window. + CursorEntered, + + /// The mouse cursor left the window. + CursorLeft, + + /// The mouse cursor was moved + CursorMoved { + /// The X coordinate of the mouse position + x: f32, + + /// The Y coordinate of the mouse position + y: f32, + }, + + /// A mouse button was pressed or released. + Input { + /// The state of the button + state: ButtonState, + + /// The button identifier + button: Button, + }, + + /// The mouse wheel was scrolled. + WheelScrolled { + /// The number of horizontal lines scrolled + delta_x: f32, + + /// The number of vertical lines scrolled + delta_y: f32, + }, +} |