On Wednesday, 10/28/2026, 16:15, Nicolas Frey <n.frey@proxmox.com> wrote:
From : Nicolas Frey <n.frey@proxmox.com>
Sent on : Wednesday, 10/28/2026, 16:15
To : yew-devel@lists.proxmox.com
Subject : [PATCH proxmox-yew-widget-toolkit 1/5] widget: data table: simplify lookup of keys near the cursorSigned-off-by: Nicolas Frey <n.frey@proxmox.com> --- src/widget/data_table/data_table.rs | 25 ++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/src/widget/data_table/data_table.rs b/src/widget/data_table/data_table.rs index 5d04173..e846522 100644 --- a/src/widget/data_table/data_table.rs +++ b/src/widget/data_table/data_table.rs @@ -620,27 +620,16 @@ impl<S: DataStore> PwtDataTable<S> { // avoid slow search by lookup up keys nearby cursor first fn filtered_record_pos(&self, props: &DataTable<S>, key: &Key) -> Option<usize> { if let Some(Cursor { pos, .. }) = &self.cursor { - let test_pos = *pos; - if let Some(record_key) = props.store.lookup_filtered_record_key(test_pos) { - if &record_key == key { + for test_pos in [Some(*pos), pos.checked_add(1), pos.checked_sub(1)] + .into_iter() + .flatten() + { + if let Some(record_key) = props.store.lookup_filtered_record_key(test_pos) + && &record_key == key + { return Some(test_pos); } } - - let test_pos = pos + 1; - if let Some(record_key) = props.store.lookup_filtered_record_key(test_pos) { - if &record_key == key { - return Some(test_pos); - } - } - if *pos > 0 { - let test_pos = pos - 1; - if let Some(record_key) = props.store.lookup_filtered_record_key(test_pos) { - if &record_key == key { - return Some(test_pos); - } - } - } } props.store.filtered_record_pos(key) -- 2.47.3