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'm trying to update a ListBox widget after dropping some files on it. This is the relevant part of my current code: fn on_file_drop(target: &DropTarget, value: &Value, ...
#2: Post edited
How can I interact with target the widget from a drop event
- How can I interact with the target widget from a drop event
#1: Initial revision
How can I interact with target the widget from a drop event
I'm trying to update a ListBox widget after dropping some files on it. This is the relevant part of my current code: ```rust fn on_file_drop(target: &DropTarget, value: &Value, _x: f64, _y: f64) -> bool { if let Ok(file_list) = value.get::<FileList>() { let list_box = target.widget().unwrap(); // ^^^^^^^^ this becomes a Gtk::Widget instead of Gtk::ListBox for file in file_list.files() { let basename = file.basename(); let path = file.path(); println!("{path:?} {basename:?}"); } return true } false } fn build_ui(app: &Application) { // more UI let files_list = ListBox::builder() .width_request(200) .height_request(300) .build(); let files_drop_target = DropTarget::builder() .actions(DragAction::COPY) .build(); files_drop_target.set_types(&[FileList::static_type()]); files_drop_target.connect_drop(on_file_drop); files_list.add_controller(files_drop_target); // more UI } ``` The problem is, that I don't understand (and can't find anything concrete in [documentation](https://docs.gtk.org/gtk4/class.DropTarget.html) or examples) on how to interact with the widget that is associated with the DropTarget. When I try to explicitly convert the widget to a ListBox like this I get an error: ```rust let list_box: ListBox = target.widget().unwrap().into(); ``` > the trait bound `gtk4::ListBox: From<gtk4::Widget>` is not satisfied required for `gtk4::Widget` to implement `Into<gtk4::ListBox>` I can't implement this example: https://github.com/gtk-rs/examples4/blob/master/src/bin/drag_and_drop.rs, the functions `.drag_dest_set()` and `.connect_drag_data_received()` don't even exist on my instanciated widgets. How can I get a ListBox out of the `target` argument, so I can interact with it? Or would I make my life much easier by implementing everything in a struct instead of just plain functions?