diff --git a/src/sdl2/event.rs b/src/sdl2/event.rs index 4278475e..54952630 100644 --- a/src/sdl2/event.rs +++ b/src/sdl2/event.rs @@ -514,7 +514,7 @@ pub enum Event { timestamp: u32, window_id: u32, which: u32, - mouse_btn: Option, + mouse_btn: MouseButton, x: i32, y: i32 }, @@ -522,7 +522,7 @@ pub enum Event { timestamp: u32, window_id: u32, which: u32, - mouse_btn: Option, + mouse_btn: MouseButton, x: i32, y: i32 }, @@ -759,11 +759,6 @@ fn mk_keysym(scancode: Option, } } -/// Helper function is only to unwrap a mouse_button to u8 -fn mk_mouse_button(mouse_button: Option) -> u8 { - mouse_button.unwrap() as u8 -} - // TODO: Remove this when from_utf8 is updated in Rust // This would honestly be nice if it took &self instead of self, // but Event::User's raw pointers kind of removes that possibility. @@ -904,13 +899,12 @@ impl Event { x, y } => { - let button = mk_mouse_button(mouse_btn); let event = ll::SDL_MouseButtonEvent { type_: ll::SDL_MOUSEBUTTONDOWN, timestamp: timestamp, windowID: window_id, which: which, - button: button, + button: mouse_btn as u8, state: ll::SDL_PRESSED, padding1: 0, padding2: 0, @@ -930,13 +924,12 @@ impl Event { x, y } => { - let button = mk_mouse_button(mouse_btn); let event = ll::SDL_MouseButtonEvent { type_: ll::SDL_MOUSEBUTTONUP, timestamp: timestamp, windowID: window_id, which: which, - button: button, + button: mouse_btn as u8, state: ll::SDL_RELEASED, padding1: 0, padding2: 0, diff --git a/src/sdl2/mouse/mod.rs b/src/sdl2/mouse/mod.rs index 7092f081..aab9d565 100644 --- a/src/sdl2/mouse/mod.rs +++ b/src/sdl2/mouse/mod.rs @@ -140,15 +140,15 @@ pub enum MouseButton { impl MouseButton { #[inline] - pub fn from_ll(button: u8) -> Option { - Some(match button { + pub fn from_ll(button: u8) -> MouseButton { + match button { ll::SDL_BUTTON_LEFT => MouseButton::Left, ll::SDL_BUTTON_MIDDLE => MouseButton::Middle, ll::SDL_BUTTON_RIGHT => MouseButton::Right, ll::SDL_BUTTON_X1 => MouseButton::X1, ll::SDL_BUTTON_X2 => MouseButton::X2, - _ => return None, - }) + _ => MouseButton::Unknown, + } } } @@ -289,7 +289,7 @@ impl<'a> Iterator for MouseButtonIterator<'a> { let mask = 1 << ((self.cur_button as u32)-1); let pressed = self.mouse_state & mask != 0; self.cur_button += 1; - Some((MouseButton::from_ll(mouse_button).unwrap(), pressed)) + Some((MouseButton::from_ll(mouse_button), pressed)) } else { None }