Generate unique identifiers for entries in conversion::menu
This commit is contained in:
parent
31997d255f
commit
f3b056a6fc
1 changed files with 29 additions and 11 deletions
|
|
@ -178,22 +178,40 @@ fn hotkey(hotkey: keyboard::Hotkey) -> winit::window::Hotkey {
|
||||||
/// [`winit`]: https://github.com/rust-windowing/winit
|
/// [`winit`]: https://github.com/rust-windowing/winit
|
||||||
/// [`iced_native`]: https://github.com/hecrj/iced/tree/master/native
|
/// [`iced_native`]: https://github.com/hecrj/iced/tree/master/native
|
||||||
pub fn menu<Message>(menu: &Menu<Message>) -> winit::window::Menu {
|
pub fn menu<Message>(menu: &Menu<Message>) -> winit::window::Menu {
|
||||||
let mut converted = winit::window::Menu::new();
|
fn menu_i<Message>(
|
||||||
|
starting_id: usize,
|
||||||
|
menu: &Menu<Message>,
|
||||||
|
) -> (winit::window::Menu, usize) {
|
||||||
|
let mut id = starting_id;
|
||||||
|
let mut converted = winit::window::Menu::new();
|
||||||
|
|
||||||
for item in menu.iter() {
|
for item in menu.iter() {
|
||||||
match item {
|
match item {
|
||||||
menu::Entry::Item {
|
menu::Entry::Item {
|
||||||
content, hotkey, ..
|
content, hotkey, ..
|
||||||
} => {
|
} => {
|
||||||
converted.add_item(0, content, hotkey.map(self::hotkey));
|
converted.add_item(id, content, hotkey.map(self::hotkey));
|
||||||
|
|
||||||
|
id += 1;
|
||||||
|
}
|
||||||
|
menu::Entry::Dropdown { content, submenu } => {
|
||||||
|
let (submenu, n_children) = menu_i(id, submenu);
|
||||||
|
|
||||||
|
converted.add_dropdown(content, submenu);
|
||||||
|
|
||||||
|
id += n_children;
|
||||||
|
}
|
||||||
|
menu::Entry::Separator => {
|
||||||
|
converted.add_separator();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
menu::Entry::Dropdown { content, submenu } => {
|
|
||||||
converted.add_dropdown(content, self::menu(submenu));
|
|
||||||
}
|
|
||||||
menu::Entry::Separator => converted.add_separator(),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(converted, id - starting_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let (converted, _) = menu_i(0, menu);
|
||||||
|
|
||||||
converted
|
converted
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue