Struct bevy_ui_navigation::NavMenu
source · [−]pub struct NavMenu { /* private fields */ }Expand description
A menu that isolate children Focusables from other focusables and
specify navigation method within itself.
A NavMenu can be used to:
- Prevent navigation from one specific submenu to another
- Specify the cycle directions of navigation (going left when focusing on a
leftmost
Focusablemay go to the rightmostFocusable) - Specify “scope menus” such that a
NavRequest::ScopeMoveemitted when the focused element is aFocusablenested within thisNavMenuwill navigate this menu. - Specify submenus and specify from where those submenus are reachable
Important
There are two important invariants to keep in mind:
- There should be no cycles in the navigation graph, ie:
You must ensure this doesn’t create a cycle. You shouldn’t be able
to reach
NavMenuX fromFocusableY if there is a path fromNavMenuX toFocusableY. - There must be at least one child
Focusablein the ui graph for eachNavMenuwhen sending aNavRequest
Implementations
Prefer NavMenu::reachable_from and NavMenu::root to this
new is useful to programmatically set the parent if you have an
optional value. This saves you from a match focus_parent.
Set this menu as cycling
ie: going left from the leftmost element goes to the rightmost element
Set this menu as a scope menu
Meaning: controlled with NavRequest::ScopeMove even when the
focused element is not in this menu, but in a submenu reachable from
this one.
Set this menu as reachable from a given Focusable
When requesting NavRequest::Action when focusable is focused, the
focus will be changed to a focusable within this menu.
Important
You must ensure this doesn’t create a cycle. Eg: you shouldn’t be able
to reach NavMenu X from Focusable Y if there is a path from
NavMenu X to Focusable Y.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for NavMenu
impl UnwindSafe for NavMenu
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read more
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
pub fn vzip(self) -> V
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more