From 29a9ce5d759cef04bea9e9e0281340e20a8678bc Mon Sep 17 00:00:00 2001 From: electria Date: Tue, 4 Aug 2026 16:49:09 -0700 Subject: [PATCH] feat: display errors --- src/app/mod.rs | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/app/mod.rs b/src/app/mod.rs index fa97d15..8736b0a 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1,6 +1,6 @@ use std::{borrow::Cow, collections::HashMap, env, path::PathBuf, process}; -use iced::{Color, Element, Renderer, Task, Theme, application, theme, widget}; +use iced::{Color, Element, Length, Renderer, Task, Theme, application, theme, widget}; use ignore::{WalkBuilder, types::TypesBuilder}; use rayon::iter::{ParallelBridge, ParallelIterator}; @@ -76,22 +76,35 @@ impl State { Task::none() } fn view(&self) -> Element<'_, Message, Theme, Renderer> { - widget::scrollable( - widget::grid(self.images.iter().map(|(path, opt_handle)| { - widget::mouse_area( - widget::sensor(opt_handle.as_ref().map_or_else( - || Element::from(widget::space()), - |handle| widget::image(handle).into(), - )) - .on_show(|_size| Message::LoadImage(path.clone())) - .on_hide(Message::UnloadImage(path.clone())), + widget::column([ + widget::scrollable(widget::grid(self.images.iter().map( + |(path, opt_handle)| { + widget::button( + widget::container( + widget::sensor(opt_handle.as_ref().map_or_else( + || Element::from(widget::space()), + |handle| widget::image(handle).into(), + )) + .on_show(|_size| Message::LoadImage(path.clone())) + .on_hide(Message::UnloadImage(path.clone())), + ) + .center(Length::Fill), + ) + .style(widget::button::subtle) + .on_press(Message::OpenImage(path.clone())) + .into() + }, + ))) + .height(Length::Fill) + .into(), + self.error + .as_ref() + .map_or_else( + || Element::from(widget::space()), + |error| widget::text(error).style(widget::text::danger).into(), ) - .on_press(Message::OpenImage(path.clone())) - .into() - })) - .fluid(500) - .spacing(0), - ) + .into(), + ]) .into() } }