use dpi::PhysicalPosition;
use keyboard_types::{KeyboardEvent, Modifiers};
use std::path::PathBuf;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum MouseButton {
Left,
Middle,
Right,
Back,
Forward,
Other(u8),
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ScrollDelta {
Lines {
x: f32,
y: f32,
},
Pixels {
x: f32,
y: f32,
},
}
#[derive(Debug, Clone, PartialEq)]
#[non_exhaustive]
pub enum MouseEvent {
CursorMoved {
position: PhysicalPosition<f64>,
modifiers: Modifiers,
},
ButtonPressed {
button: MouseButton,
modifiers: Modifiers,
},
ButtonReleased {
button: MouseButton,
modifiers: Modifiers,
},
WheelScrolled {
delta: ScrollDelta,
modifiers: Modifiers,
},
CursorEntered,
CursorLeft,
DragEntered {
position: PhysicalPosition<f64>,
modifiers: Modifiers,
data: DropData,
},
DragMoved {
position: PhysicalPosition<f64>,
modifiers: Modifiers,
data: DropData,
},
DragLeft,
DragDropped {
position: PhysicalPosition<f64>,
modifiers: Modifiers,
data: DropData,
},
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub enum WindowEvent {
Focused,
Unfocused,
WillClose,
}
#[derive(Debug, Clone)]
#[non_exhaustive]
pub enum Event {
Mouse(MouseEvent),
Keyboard(KeyboardEvent),
Window(WindowEvent),
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum DropEffect {
Copy,
Move,
Link,
Scroll,
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq)]
pub enum DropData {
None,
Files(Vec<PathBuf>),
}
#[derive(Debug, Clone, Copy, PartialEq)]
#[non_exhaustive]
pub enum EventStatus {
Captured,
Ignored,
AcceptDrop(DropEffect),
}