Closed shartrec closed 1 month ago
Can you please give branch menu_fix a try to see if it fixes the issue?
I couldn't get that to build. Errors with other widgets.
/home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/overlay/color_picker.rs:112:22
|
111 | / iced::widget::Text::new(icon_to_string(Bootstrap::X))
112 | | .align_x(Horizontal::Center)
| | -^^^^^^^ method not found in `Text<'_, _, _>`
| |_____________________|
Although I checked out your branch and could build it and run the examples. Very confused!!
OK. Got app to build by adjusting cargo.toml to not include default features, only the ones I was using
[dependencies.iced_aw]
git = "https://github.com/iced-rs/iced_aw.git"
branch = "menu_fix"
default-features = false
features = [
"menu",
"icons"
]
The problem remains, but with slightly different stack trace / error
range end index 13 out of range for slice of length 12
stack backtrace:
0: rust_begin_unwind
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/panicking.rs:652:5
1: core::panicking::panic_fmt
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/panicking.rs:72:14
2: core::slice::index::slice_end_index_len_fail_rt
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:66:5
3: core::slice::index::slice_end_index_len_fail
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:59:5
4: <core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::index
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:405:13
5: <core::ops::range::RangeInclusive<usize> as core::slice::index::SliceIndex<[T]>>::index
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:581:9
6: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:18:9
7: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/alloc/src/vec/mod.rs:2907:9
8: iced_aw::widgets::menu::menu_tree::Menu<Message,Theme,Renderer>::mouse_interaction
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_tree.rs:396:19
9: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:380:21
10: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec::{{closure}}
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:385:17
11: core::option::Option<T>::map_or
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1131:24
12: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:382:13
13: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec::{{closure}}
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:385:17
14: core::option::Option<T>::map_or
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1131:24
15: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:382:13
16: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:397:9
17: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
18: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
19: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
20: core::option::Option<T>::map
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1072:29
21: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/adapters/map.rs:108:26
22: core::iter::traits::iterator::Iterator::reduce
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2624:21
23: core::iter::traits::iterator::Iterator::max_by
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3260:9
24: core::iter::traits::iterator::Iterator::max
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3161:9
25: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:121:9
26: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
27: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
28: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
29: core::option::Option<T>::map
I think the error is now in line 393
let max_item_slice = self.items.len().min(slice.end_index);
where the max_item_slice
gets set to length, not length-1, but in line 396, the slice uses the ..=
operator which is range inclusive.
Testing locally with the following patch on top of your branch seems to have fixed it. :)
Index: src/widgets/menu/menu_tree.rs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/widgets/menu/menu_tree.rs b/src/widgets/menu/menu_tree.rs
--- a/src/widgets/menu/menu_tree.rs (revision Staged)
+++ b/src/widgets/menu/menu_tree.rs (date 1721525273153)
@@ -390,8 +390,8 @@
let menu_state = tree.state.downcast_ref::<MenuState>();
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()
Sorry I tried to attach this as a patch file, but I was unable to do so.
ahh ok why not push a PR to that branch with the small fix
Done!
When traversing cascading menus with the mouse, I continually get a panic in /iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_tree.rs:394:19
Using the master branch.
The sack trace is :
In RustRover debugger, the offending values are
Screenshot of menus before crash. This is just an example. I cannot see any particular movement pattern that causes the crash.
Code is available at https://github.com/shartrec/RustyCalc/tree/4-Add_menus_in_place_of_popup