Fixes for menu
- Invalidate layout when menu is opened - Align tree with menu widget when handling menu events
This commit is contained in:
parent
98d6d67ab9
commit
5b2ac941c3
1 changed files with 9 additions and 9 deletions
|
|
@ -552,6 +552,7 @@ where
|
||||||
init_root_menu(
|
init_root_menu(
|
||||||
self,
|
self,
|
||||||
renderer,
|
renderer,
|
||||||
|
shell,
|
||||||
overlay_cursor,
|
overlay_cursor,
|
||||||
viewport_size,
|
viewport_size,
|
||||||
overlay_offset,
|
overlay_offset,
|
||||||
|
|
@ -750,6 +751,7 @@ fn pad_rectangle(rect: Rectangle, padding: Padding) -> Rectangle {
|
||||||
fn init_root_menu<Message, Renderer>(
|
fn init_root_menu<Message, Renderer>(
|
||||||
menu: &mut Menu<'_, '_, Message, Renderer>,
|
menu: &mut Menu<'_, '_, Message, Renderer>,
|
||||||
renderer: &Renderer,
|
renderer: &Renderer,
|
||||||
|
shell: &mut Shell<'_, Message>,
|
||||||
overlay_cursor: Point,
|
overlay_cursor: Point,
|
||||||
viewport_size: Size,
|
viewport_size: Size,
|
||||||
overlay_offset: Vector,
|
overlay_offset: Vector,
|
||||||
|
|
@ -815,6 +817,9 @@ fn init_root_menu<Message, Renderer>(
|
||||||
menu_bounds,
|
menu_bounds,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Hack to ensure menu opens properly
|
||||||
|
shell.invalidate_layout();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -852,25 +857,20 @@ where
|
||||||
.iter()
|
.iter()
|
||||||
.fold(&mut menu_roots[active_root], |mt, &i| &mut mt.children[i]);
|
.fold(&mut menu_roots[active_root], |mt, &i| &mut mt.children[i]);
|
||||||
|
|
||||||
|
// widget tree
|
||||||
|
let tree = &mut tree.children[active_root].children[mt.index];
|
||||||
|
|
||||||
// get layout
|
// get layout
|
||||||
let last_ms = &state.menu_states[indices.len() - 1];
|
let last_ms = &state.menu_states[indices.len() - 1];
|
||||||
let last_tree = tree.children[active_root]
|
|
||||||
.children
|
|
||||||
.iter_mut()
|
|
||||||
.last()
|
|
||||||
.unwrap();
|
|
||||||
let child_node = last_ms.layout_single(
|
let child_node = last_ms.layout_single(
|
||||||
overlay_offset,
|
overlay_offset,
|
||||||
last_ms.index.expect("missing index within menu state."),
|
last_ms.index.expect("missing index within menu state."),
|
||||||
renderer,
|
renderer,
|
||||||
mt,
|
mt,
|
||||||
last_tree,
|
tree,
|
||||||
);
|
);
|
||||||
let child_layout = Layout::new(&child_node);
|
let child_layout = Layout::new(&child_node);
|
||||||
|
|
||||||
// widget tree
|
|
||||||
let tree = &mut tree.children[active_root].children[mt.index];
|
|
||||||
|
|
||||||
// process only the last widget
|
// process only the last widget
|
||||||
mt.item.as_widget_mut().on_event(
|
mt.item.as_widget_mut().on_event(
|
||||||
tree,
|
tree,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue