From da621708ba78bbcbcdd02f42c9f434b4647aa036 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 26 Sep 2025 10:01:38 -0500 Subject: [PATCH] fixing some bugs with selecting and deleting --- src/ui/library.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/ui/library.rs b/src/ui/library.rs index 9e9630c..a9350c2 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -287,6 +287,18 @@ impl<'a> Library { } } } + if modifiers.control() { + let Some(item) = item else { + return Action::None; + }; + let Some(items) = self.selected_items.as_mut() + else { + self.selected_items = Some(vec![item]); + return Action::None; + }; + items.push(item); + self.selected_items = Some(items.to_vec()); + } } Message::DragItem(item) => { debug!(?item); @@ -877,11 +889,13 @@ impl<'a> Library { fn delete_items(&mut self) -> Action { // Need to make this function collect tasks to be run off of // who should be deleted - let Some(ref items) = self.selected_items else { + let Some(items) = self.selected_items.as_mut() else { return Action::None; }; + items.sort_by(|(_, index), (_, other)| index.cmp(other)); let tasks: Vec> = items .iter() + .rev() .map(|(kind, index)| match kind { LibraryKind::Song => { if let Some(song) =