diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 034b2f6..a464856 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -396,25 +396,25 @@ pub fn episodes_listbox(pd: Arc, sender: Sender) -> Result(data: Vec, container: Z, mut predicate: P) +fn lazy_load(mut data: Vec, container: Z, mut predicate: P) where - T: Clone + 'static, + T: 'static, Z: ContainerExt + 'static, P: FnMut(T) -> U + 'static, U: IsA, { - let mut idx = 0; + // to use it as a stack + data.reverse(); gtk::idle_add(move || { - if idx >= data.len() { + if data.is_empty() { return glib::Continue(false); } - data.get(idx).cloned().map(|x| { + data.pop().map(|x| { let widget = predicate(x); container.add(&widget); }); - idx += 1; glib::Continue(true) }); }