Combine platform mouse events to use common MouseEvent struct and remove MouseDragged event in favor of MouseMoved
This commit is contained in:
parent
686e57373b
commit
bcb553f233
8 changed files with 172 additions and 163 deletions
|
@ -1,11 +1,5 @@
|
|||
use crate::{geometry::vector::Vector2F, keymap::Keystroke};
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum NavigationDirection {
|
||||
Back,
|
||||
Forward,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct KeyDownEvent {
|
||||
pub keystroke: Keystroke,
|
||||
|
@ -34,8 +28,23 @@ pub struct ScrollWheelEvent {
|
|||
pub precise: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum NavigationDirection {
|
||||
Back,
|
||||
Forward,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum MouseButton {
|
||||
Left,
|
||||
Right,
|
||||
Middle,
|
||||
Navigate(NavigationDirection),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct LeftMouseDownEvent {
|
||||
pub struct MouseEvent {
|
||||
pub button: MouseButton,
|
||||
pub position: Vector2F,
|
||||
pub ctrl: bool,
|
||||
pub alt: bool,
|
||||
|
@ -44,58 +53,10 @@ pub struct LeftMouseDownEvent {
|
|||
pub click_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct LeftMouseUpEvent {
|
||||
pub position: Vector2F,
|
||||
pub click_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct LeftMouseDraggedEvent {
|
||||
pub position: Vector2F,
|
||||
pub ctrl: bool,
|
||||
pub alt: bool,
|
||||
pub shift: bool,
|
||||
pub cmd: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RightMouseDownEvent {
|
||||
pub position: Vector2F,
|
||||
pub ctrl: bool,
|
||||
pub alt: bool,
|
||||
pub shift: bool,
|
||||
pub cmd: bool,
|
||||
pub click_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RightMouseUpEvent {
|
||||
pub position: Vector2F,
|
||||
pub click_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct NavigateMouseDownEvent {
|
||||
pub position: Vector2F,
|
||||
pub direction: NavigationDirection,
|
||||
pub ctrl: bool,
|
||||
pub alt: bool,
|
||||
pub shift: bool,
|
||||
pub cmd: bool,
|
||||
pub click_count: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct NavigateMouseUpEvent {
|
||||
pub position: Vector2F,
|
||||
pub direction: NavigationDirection,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub struct MouseMovedEvent {
|
||||
pub position: Vector2F,
|
||||
pub left_mouse_down: bool,
|
||||
pub pressed_button: Option<MouseButton>,
|
||||
pub ctrl: bool,
|
||||
pub cmd: bool,
|
||||
pub alt: bool,
|
||||
|
@ -107,15 +68,10 @@ pub enum Event {
|
|||
KeyDown(KeyDownEvent),
|
||||
KeyUp(KeyUpEvent),
|
||||
ModifiersChanged(ModifiersChangedEvent),
|
||||
ScrollWheel(ScrollWheelEvent),
|
||||
LeftMouseDown(LeftMouseDownEvent),
|
||||
LeftMouseUp(LeftMouseUpEvent),
|
||||
LeftMouseDragged(LeftMouseDraggedEvent),
|
||||
RightMouseDown(RightMouseDownEvent),
|
||||
RightMouseUp(RightMouseUpEvent),
|
||||
NavigateMouseDown(NavigateMouseDownEvent),
|
||||
NavigateMouseUp(NavigateMouseUpEvent),
|
||||
MouseDown(MouseEvent),
|
||||
MouseUp(MouseEvent),
|
||||
MouseMoved(MouseMovedEvent),
|
||||
ScrollWheel(ScrollWheelEvent),
|
||||
}
|
||||
|
||||
impl Event {
|
||||
|
@ -124,15 +80,9 @@ impl Event {
|
|||
Event::KeyDown { .. } => None,
|
||||
Event::KeyUp { .. } => None,
|
||||
Event::ModifiersChanged { .. } => None,
|
||||
Event::ScrollWheel(ScrollWheelEvent { position, .. })
|
||||
| Event::LeftMouseDown(LeftMouseDownEvent { position, .. })
|
||||
| Event::LeftMouseUp(LeftMouseUpEvent { position, .. })
|
||||
| Event::LeftMouseDragged(LeftMouseDraggedEvent { position, .. })
|
||||
| Event::RightMouseDown(RightMouseDownEvent { position, .. })
|
||||
| Event::RightMouseUp(RightMouseUpEvent { position, .. })
|
||||
| Event::NavigateMouseDown(NavigateMouseDownEvent { position, .. })
|
||||
| Event::NavigateMouseUp(NavigateMouseUpEvent { position, .. })
|
||||
| Event::MouseMoved(MouseMovedEvent { position, .. }) => Some(*position),
|
||||
Event::MouseDown(event) | Event::MouseUp(event) => Some(event.position),
|
||||
Event::MouseMoved(event) => Some(event.position),
|
||||
Event::ScrollWheel(event) => Some(event.position),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue