From 168c2525c84079407963b44583c15aa243a0b940 Mon Sep 17 00:00:00 2001 From: genusistimelord Date: Sat, 20 Jul 2024 00:08:55 -0400 Subject: [PATCH 1/2] attempt to fix slice being used as Max usize and Limit max size to Len() --- src/widgets/menu/menu_tree.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/widgets/menu/menu_tree.rs b/src/widgets/menu/menu_tree.rs index 5ce0563d..a747308e 100644 --- a/src/widgets/menu/menu_tree.rs +++ b/src/widgets/menu/menu_tree.rs @@ -70,7 +70,7 @@ impl Default for MenuState { active: None, slice: MenuSlice { start_index: 0, - end_index: usize::MAX, + end_index: usize::MAX - 1, lower_bound_rel: 0.0, upper_bound_rel: f32::MAX, }, @@ -390,10 +390,12 @@ where let menu_state = tree.state.downcast_ref::(); let slice = &menu_state.slice; + let max_item_slice = self.items.len().min(slice.end_index); + let max_tree_slice = tree.children.len().min(slice.end_index); - self.items[slice.start_index..=slice.end_index] + self.items[slice.start_index..=max_item_slice] .iter() - .zip(tree.children[slice.start_index..=slice.end_index].iter()) // [item_tree...] + .zip(tree.children[slice.start_index..=max_tree_slice].iter()) // [item_tree...] .zip(slice_layout.children()) // [item_layout...] .map(|((item, tree), layout)| { item.mouse_interaction(tree, layout, cursor, viewport, renderer) From 42357b974961e41737ff52a5e42551ebd769ddb3 Mon Sep 17 00:00:00 2001 From: Trevor Campbell Date: Sun, 21 Jul 2024 14:51:58 +1000 Subject: [PATCH 2/2] Fix out of range error when traversing menus --- src/widgets/menu/menu_tree.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/menu/menu_tree.rs b/src/widgets/menu/menu_tree.rs index a747308e..e1a5448d 100644 --- a/src/widgets/menu/menu_tree.rs +++ b/src/widgets/menu/menu_tree.rs @@ -390,8 +390,8 @@ where let menu_state = tree.state.downcast_ref::(); let slice = &menu_state.slice; - let max_item_slice = self.items.len().min(slice.end_index); - let max_tree_slice = tree.children.len().min(slice.end_index); + let max_item_slice = self.items.len()-1.min(slice.end_index); + let max_tree_slice = tree.children.len()-1.min(slice.end_index); self.items[slice.start_index..=max_item_slice] .iter()