Compare commits

..

View file

@ -88,12 +88,10 @@ impl State {
.as_ref() .as_ref()
.map(|error| widget::text(error).style(widget::text::danger)); .map(|error| widget::text(error).style(widget::text::danger));
let info = self.infobar_shown.then_some(()).and_then(|()| { let info = (self.infobar_shown && self.info.is_some()).then(|| {
self.info.as_ref().map(|info| { widget::container(widget::text(self.title()))
widget::container(widget::text(info)) .align_x(Alignment::End)
.align_x(Alignment::End) .width(Length::Fill)
.width(Length::Fill)
})
}); });
widget::column![main, widget::row![error, info]] widget::column![main, widget::row![error, info]]
@ -114,6 +112,7 @@ impl State {
} }
Message::SavePathPicked(result) => { Message::SavePathPicked(result) => {
self.error = result self.error = result
.map_err(Cow::from)
.and_then(|path| { .and_then(|path| {
self.image.as_ref().map_or_else( self.image.as_ref().map_or_else(
|| Err("no image to save".into()), || Err("no image to save".into()),
@ -168,7 +167,7 @@ impl State {
Message::Yank => { Message::Yank => {
if let Some(image) = self.image.as_ref() { if let Some(image) = self.image.as_ref() {
return clipboard::write(utils::clipboard_image_from_rgbaimage(image)) return clipboard::write(utils::clipboard_image_from_rgbaimage(&image))
.map(Message::ImageYanked); .map(Message::ImageYanked);
} else { } else {
self.error = Some("no image to yank".into()); self.error = Some("no image to yank".into());
@ -183,7 +182,7 @@ impl State {
self.error = result.as_ref().err().map(|e| format!("{e:?}").into()); self.error = result.as_ref().err().map(|e| format!("{e:?}").into());
if let Ok(image) = result { if let Ok(image) = result {
self.info = Some(format!("{}x{}", image.size.width, image.size.height)); self.info = Some(format!("{}x{}", image.size.width, image.size.height,));
if (image.size.width, image.size.height) < (100, 100) { if (image.size.width, image.size.height) < (100, 100) {
self.image_filter = widget::image::FilterMethod::Nearest; self.image_filter = widget::image::FilterMethod::Nearest;
} }
@ -221,7 +220,7 @@ impl State {
image.width(), image.width(),
image.height(), image.height(),
)); ));
if image.dimensions() < (192, 192) { if image.dimensions() < (100, 100) {
self.image_filter = widget::image::FilterMethod::Nearest; self.image_filter = widget::image::FilterMethod::Nearest;
} }
self.image = Some(image); self.image = Some(image);
@ -273,8 +272,8 @@ impl State {
Key::Character("s") => Some(Message::Save), Key::Character("s") => Some(Message::Save),
Key::Character("q") => Some(Message::Quit), Key::Character("q") => Some(Message::Quit),
Key::Character("y" | "c") => Some(Message::Yank), Key::Character("y") | Key::Character("c") => Some(Message::Yank),
Key::Character("p" | "v") => Some(Message::Put), Key::Character("p") | Key::Character("v") => Some(Message::Put),
_ => None, _ => None,
} }