diff --git a/src/ui/listview.rs b/src/ui/listview.rs index 9db0f48..595d9ff 100644 --- a/src/ui/listview.rs +++ b/src/ui/listview.rs @@ -113,12 +113,14 @@ impl ListView { fn attempt_play_all_tracks(&self) -> bool { let content = self.content.read().unwrap(); let any = &(*content) as &dyn std::any::Any; - if let Some(tracks) = any.downcast_ref::>() { - let tracks: Vec = tracks - .iter() - .map(|track| Playable::Track(track.clone())) - .collect(); - let index = self.queue.append_next(&tracks); + let playables = any.downcast_ref::>(); + let tracks = any.downcast_ref::>().map(|t| { + t.iter() + .map(|t| Playable::Track(t.clone())) + .collect::>() + }); + if let Some(tracks) = playables.or_else(|| tracks.as_ref()) { + let index = self.queue.append_next(tracks); self.queue.play(index + self.selected, true, false); true } else {