self.message.set("Name required");
return;
}
-
- let i = self.groups.selected_index();
- let collections = self.groups.data();
- let parent = usize::try_from(i).ok().and_then(|idx| collections.get(idx));
+
+ let parent = self.groups.selected_element();
if let Some(parent) = parent {
let proxy = obj.obj_proxy();
}
}
- pub fn selection(&mut self) -> Vec<i32> {
+ pub fn selection(&self) -> Vec<i32> {
unsafe {
let selection = ListSelection {
ptr: ui_list_get_selection_allocated(self.ptr),
}
}
+ pub fn selected_element(&self) -> Option<&T> {
+ let sel = self.selection();
+ if sel.len() == 1 {
+ let index = sel[0];
+ return self.data.get(index as usize);
+ }
+ None
+ }
+
pub fn set_selection(&mut self, sel: &Vec<i32>) {
unsafe {
ui_list_set_selected_indices(self.ptr, sel.as_ptr(), sel.len() as c_int);
let count = ui_list_selection_get_count(self.ptr) as usize;
if count > 0 {
let indices = ui_list_selection_get_rows(self.ptr);
- sel.set_len(count as usize);
for i in 0..count {
sel.push(*indices.add(i) as i32);
}