From: Olaf Wintermann Date: Wed, 20 May 2026 18:59:01 +0000 (+0200) Subject: fix ListSelection.selection method X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=58f4d2df1f6f817da0ef3979fafe45b77921ae10;p=note.git fix ListSelection.selection method --- diff --git a/application/src/newnotebook.rs b/application/src/newnotebook.rs index 1bb1aeb..297d936 100644 --- a/application/src/newnotebook.rs +++ b/application/src/newnotebook.rs @@ -53,10 +53,8 @@ impl NewNotebookDialog { 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(); diff --git a/ui-rs/src/ui/toolkit.rs b/ui-rs/src/ui/toolkit.rs index 5ee295f..f63a89c 100644 --- a/ui-rs/src/ui/toolkit.rs +++ b/ui-rs/src/ui/toolkit.rs @@ -622,7 +622,7 @@ impl UiList { } } - pub fn selection(&mut self) -> Vec { + pub fn selection(&self) -> Vec { unsafe { let selection = ListSelection { ptr: ui_list_get_selection_allocated(self.ptr), @@ -638,6 +638,15 @@ impl UiList { } } + 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) { unsafe { ui_list_set_selected_indices(self.ptr, sel.as_ptr(), sel.len() as c_int); @@ -687,7 +696,6 @@ impl ListSelection { 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); }