diff --git a/src/main.rs b/src/main.rs index 2b7bad5..dd94f79 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,7 +23,8 @@ enum Message { ImageDisplayReady(Result), SavePathPicked(Result), - Event(iced::Event), + KeyPressed(keyboard::Key, keyboard::Modifiers), + FileDropped(PathBuf), } #[derive(Default)] @@ -115,11 +116,7 @@ impl State { .err(); } - Message::Event(iced::Event::Keyboard(keyboard::Event::KeyPressed { - key, - modifiers, - .. - })) => match key.as_ref() { + Message::KeyPressed(key, modifiers) => match key.as_ref() { // input field cycling Key::Named(key::Named::Tab) => { if modifiers.shift() { @@ -215,18 +212,13 @@ impl State { _ => {} }, - Message::Event(iced::Event::Window(window::Event::FileDropped(file))) => { - match self.load_image(file) { - Ok(task) => { - self.error = None; - return task; - } - Err(e) => self.error = Some(e), + Message::FileDropped(path) => match self.load_image(path) { + Ok(task) => { + self.error = None; + return task; } - } - - // ignore unused events - Message::Event(_) => {} + Err(e) => self.error = Some(e), + }, } Task::none() @@ -284,7 +276,15 @@ impl State { } fn subscription(&self) -> Subscription { - event::listen().map(Message::Event) + event::listen().filter_map(|event| match event { + iced::Event::Keyboard(keyboard::Event::KeyPressed { key, modifiers, .. }) => { + Some(Message::KeyPressed(key, modifiers)) + } + iced::Event::Window(window::Event::FileDropped(path)) => { + Some(Message::FileDropped(path)) + } + _ => None, + }) } fn title(&self) -> String { self.info.as_ref().map_or_else(