Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
I managed to do this by changing my on_file_drop() function into a closure and adding the glib::clone! macro: Macro glib::clone Macro for passing variables as strong or weak references into a c...
Answer
#1: Initial revision
I managed to do this by changing my `on_file_drop()` function into a [closure](https://doc.rust-lang.org/book/ch13-01-closures.html) and adding the [`glib::clone!` macro](https://docs.rs/glib/latest/glib/macro.clone.html): > ****Macro `glib::clone`**** > Macro for passing variables as strong or weak references into a closure. > > This macro can be useful in combination with closures, e.g. signal handlers, to reduce the boilerplate required for passing strong or weak references into the closure. It will automatically create the new reference and pass it with the same name into the closure. My working code is: ```rust files_drop_target.connect_drop(glib::clone!( #[weak()] files_list, #[upgrade_or] false, move |_, data, _, _| { if let Ok(file_list) = data.get::<FileList>() { for file in file_list.files() { let basename = file.basename().unwrap().display().to_string(); let path = file.path().unwrap().display().to_string(); let file_label = Label::builder() .label(&basename) .build(); files_list.append(&file_label); } return true } false })); ``` I haven't managed yet to wrap my head around closures completely, but this is a large step forward.