Use Menu::default for root level menu in conversion::menu

This commit is contained in:
Héctor Ramón Jiménez 2021-07-13 21:11:13 +02:00
parent 6221adf2b1
commit 4abaee8b23
No known key found for this signature in database
GPG key ID: 44B88EB52AB1EE8D

View file

@ -179,11 +179,11 @@ fn hotkey(hotkey: keyboard::Hotkey) -> winit::window::Hotkey {
/// [`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 {
fn menu_i<Message>( fn menu_i<Message>(
converted: &mut winit::window::Menu,
starting_id: usize, starting_id: usize,
menu: &Menu<Message>, menu: &Menu<Message>,
) -> (winit::window::Menu, usize) { ) -> usize {
let mut id = starting_id; 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 {
@ -195,9 +195,11 @@ pub fn menu<Message>(menu: &Menu<Message>) -> winit::window::Menu {
id += 1; id += 1;
} }
menu::Entry::Dropdown { content, submenu } => { menu::Entry::Dropdown { content, submenu } => {
let (submenu, n_children) = menu_i(id, submenu); let mut converted_submenu = winit::window::Menu::new();
let n_children =
menu_i(&mut converted_submenu, id, submenu);
converted.add_dropdown(content, submenu); converted.add_dropdown(content, converted_submenu);
id += n_children; id += n_children;
} }
@ -207,10 +209,11 @@ pub fn menu<Message>(menu: &Menu<Message>) -> winit::window::Menu {
} }
} }
(converted, id - starting_id) id - starting_id
} }
let (converted, _) = menu_i(0, menu); let mut converted = winit::window::Menu::default();
let _ = menu_i(&mut converted, 0, menu);
converted converted
} }