From 9fa26e41cd80c891711c86e4f3571feaf8f5f9f1 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Thu, 9 Apr 2026 11:33:12 -0500 Subject: [PATCH] [fix]: Fixing bugs when adding items to the service --- src/main.rs | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 08b0ccf..5ca72bd 100755 --- a/src/main.rs +++ b/src/main.rs @@ -204,7 +204,8 @@ enum Message { AddSelectServiceItem(usize), HoveredServiceItem(Option), HoveredServiceDrop(Option), - AddServiceItem(usize, KindWrapper), + AddServiceItem(usize, ServiceItem), + AddServiceItemKind(usize, KindWrapper), AddServiceItemsFiles(usize, Vec), RemoveServiceItem(usize), AddServiceItemDrop(usize), @@ -1251,6 +1252,12 @@ impl cosmic::Application for App { Task::none() } Message::AddServiceItem(index, item) => { + self.service.insert(index, item); + self.presenter.update_items(self.service.clone()); + self.hovered_dnd = None; + Task::none() + } + Message::AddServiceItemKind(index, item) => { let item_index = item.0.1; let kind = item.0.0; let mut item; @@ -1315,18 +1322,19 @@ impl cosmic::Application for App { .unwrap_or(slide) }) .collect(); - self.service.insert(index, item); - self.presenter.update_items(self.service.clone()); - self.hovered_dnd = None; - Task::none() + return self + .update(Message::AddServiceItem(index, item)); } Message::AddServiceItemsFiles(index, items) => { self.hovered_dnd = None; - for item in items { - self.service.insert(index, item); + let mut tasks = Vec::new(); + for (i, item) in items.into_iter().enumerate() { + tasks.push(self.update(Message::AddServiceItem( + index + i, + item, + ))); } - self.presenter.update_items(self.service.clone()); - Task::none() + Task::batch(tasks) } Message::RemoveServiceItem(index) => { self.service.remove(index); @@ -1339,7 +1347,10 @@ impl cosmic::Application for App { } Message::AddServiceItemDrop(index) => { if let Some(item) = &self.library_dragged_item { - self.service.insert(index, item.clone()); + return self.update(Message::AddServiceItem( + index, + item.clone(), + )); } Task::none() } @@ -2001,7 +2012,7 @@ where return Message::None; }; debug!(?item, index, "adding Service item"); - Message::AddServiceItem(index, item) + Message::AddServiceItemKind(index, item) } "text/uri-list" => { let Ok(text) = str::from_utf8(&data) else { @@ -2095,7 +2106,7 @@ where return Message::None; }; debug!(?item, "adding Service item"); - Message::AddServiceItem(last_index, item) + Message::AddServiceItemKind(last_index, item) } "text/uri-list" => { let Ok(text) = str::from_utf8(&data) else {