diff --git a/src/event/source/unix.rs b/src/event/source/unix.rs index fd33ffc6..23e598b2 100644 --- a/src/event/source/unix.rs +++ b/src/event/source/unix.rs @@ -41,7 +41,7 @@ pub(crate) struct UnixInternalEventSource { impl UnixInternalEventSource { pub fn new() -> Result { - Ok(UnixInternalEventSource::from_file_descriptor(tty_fd()?)?) + UnixInternalEventSource::from_file_descriptor(tty_fd()?) } pub(crate) fn from_file_descriptor(input_fd: FileDesc) -> Result { diff --git a/src/event/source/windows.rs b/src/event/source/windows.rs index 750761a8..93598839 100644 --- a/src/event/source/windows.rs +++ b/src/event/source/windows.rs @@ -23,6 +23,10 @@ impl WindowsEventSource { let console = Console::from(Handle::current_in_handle()?); Ok(WindowsEventSource { console, + + #[cfg(not(feature = "event-stream"))] + poll: WinApiPoll::new(), + #[cfg(feature = "event-stream")] poll: WinApiPoll::new()?, }) } @@ -37,8 +41,8 @@ impl EventSource for WindowsEventSource { let number = self.console.number_of_console_input_events()?; if event_ready && number != 0 { let event = match self.console.read_single_input_event()? { - InputRecord::KeyEvent(record) => handle_key_event(record)?, - InputRecord::MouseEvent(record) => handle_mouse_event(record)?, + InputRecord::KeyEvent(record) => handle_key_event(record), + InputRecord::MouseEvent(record) => handle_mouse_event(record), InputRecord::WindowBufferSizeEvent(record) => { Some(Event::Resize(record.size.x as u16, record.size.y as u16)) } diff --git a/src/event/sys/windows/parse.rs b/src/event/sys/windows/parse.rs index 8f733b44..6e695c88 100644 --- a/src/event/sys/windows/parse.rs +++ b/src/event/sys/windows/parse.rs @@ -14,21 +14,22 @@ use crate::{ Result, }; -pub(crate) fn handle_mouse_event(mouse_event: MouseEvent) -> Result> { +pub(crate) fn handle_mouse_event(mouse_event: MouseEvent) -> Option { if let Ok(Some(event)) = parse_mouse_event_record(&mouse_event) { - return Ok(Some(Event::Mouse(event))); + return Some(Event::Mouse(event)); } - Ok(None) + + None } -pub(crate) fn handle_key_event(key_event: KeyEventRecord) -> Result> { +pub(crate) fn handle_key_event(key_event: KeyEventRecord) -> Option { if key_event.key_down { if let Some(event) = parse_key_event_record(&key_event) { - return Ok(Some(Event::Key(event))); + return Some(Event::Key(event)); } } - Ok(None) + None } impl From for KeyModifiers { diff --git a/src/event/sys/windows/poll.rs b/src/event/sys/windows/poll.rs index 67e4cb94..429b45f6 100644 --- a/src/event/sys/windows/poll.rs +++ b/src/event/sys/windows/poll.rs @@ -22,9 +22,14 @@ pub(crate) struct WinApiPoll { } impl WinApiPoll { + #[cfg(not(feature = "event-stream"))] + pub(crate) fn new() -> WinApiPoll { + WinApiPoll {} + } + + #[cfg(feature = "event-stream")] pub(crate) fn new() -> Result { Ok(WinApiPoll { - #[cfg(feature = "event-stream")] waker: Waker::new()?, }) }