From ae84870ef18d651510fd44c5ee80d68c030f1e11 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 2 May 2025 23:12:39 -0500 Subject: [PATCH] fix library buttons layout --- src/ui/library.rs | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/ui/library.rs b/src/ui/library.rs index 80570e4..1c09e13 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -1,8 +1,11 @@ +use std::rc::Rc; + use cosmic::{ iced::{ alignment::Vertical, clipboard::dnd::DndAction, futures::FutureExt, Background, Border, Color, Length, }, + iced_core::widget::tree::State, iced_widget::{column, row as rowm, text as textm}, theme, widget::{ @@ -357,7 +360,7 @@ impl<'a> Library { |(index, item)| { let service_item = item.to_service_item(); let drag_item = - self.single_item(index, item, model); + Box::new(self.single_item(index, item, &model)); let visual_item = self .single_item(index, item, model) .map(|_| Message::None); @@ -384,11 +387,25 @@ impl<'a> Library { )), ) .action(DndAction::Copy) - // .drag_icon(move |i| { - // let state = - // drag_item.as_widget().state(); - // (drag_item, state, i) - // }) + .drag_icon({ + let model = model.kind.clone(); + move |i| { + let state = State::None; + let icon = match model { + LibraryKind::Song => icon::from_name( + "folder-music-symbolic", + ) + , + LibraryKind::Video => icon::from_name("folder-videos-symbolic"), + LibraryKind::Image => icon::from_name("folder-pictures-symbolic"), + LibraryKind::Presentation => icon::from_name("x-office-presentation-symbolic"), + }; + ( + icon.into(), + state, + i, + ) + }}) .drag_content(move || { service_item.to_owned() }) @@ -396,10 +413,11 @@ impl<'a> Library { }, ) }) - .spacing(2) - .width(Length::Fill), + .spacing(2) + .width(Length::Fill), ) - .spacing(5); + .spacing(5) + .height(Length::Fill); let library_toolbar = rowm!( text_input("Search...", ""),