Struct bevy_ui_navigation::prelude::Focusable
source · pub struct Focusable { /* private fields */ }
Expand description
An [Entity
] that can be navigated to, using the cursor navigation system.
It is in one of multiple FocusState
,
you can check its state with the Focusable::state
method.
A Focusable
can execute a variety of FocusAction
when receiving NavRequest::Action
,
the default one is FocusAction::Normal
.
Note: You should avoid updating manually the state of Focusable
s.
You should instead use NavRequest
to manipulate and change focus.
Implementations§
source§impl Focusable
impl Focusable
sourcepub fn state(&self) -> FocusState
pub fn state(&self) -> FocusState
The FocusState
of this Focusable
.
sourcepub fn action(&self) -> FocusAction
pub fn action(&self) -> FocusAction
The FocusAction
of this Focusable
.
sourcepub fn cancel() -> Self
pub fn cancel() -> Self
A “cancel” focusable, see FocusAction::Cancel
.
sourcepub fn lock() -> Self
pub fn lock() -> Self
A “lock” focusable, see FocusAction::Lock
.
sourcepub fn prioritized(self) -> Self
pub fn prioritized(self) -> Self
A focusable that will get highlighted in priority when none are set yet.
WARNING: Only use this when creating the UI. Any of the following state is unspecified and will likely result in broken behavior:
- Having multiple prioritized
Focusable
s in the same menu. - Updating an already existing
Focusable
with this.
Example
fn setup(mut commands: Commands) {
commands.spawn(FocusableButtonBundle {
focus: Focusable::new().prioritized(),
..default()
});
}
sourcepub fn blocked(self) -> Self
pub fn blocked(self) -> Self
A FocusState::Blocked
focusable.
This focusable will not be able to take focus until
Focusable::unblock
is called on it.
Example
fn setup(mut commands: Commands) {
commands.spawn(FocusableButtonBundle {
focus: Focusable::new().blocked(),
..default()
});
}
sourcepub fn block(&mut self) -> bool
pub fn block(&mut self) -> bool
Prevent this Focusable
from gaining focus until it is unblocked.
Note: Due to the way focus is handled, this does nothing
when the Focusable::state
is FocusState::Active
or FocusState::Focused
.
Returns true
if self
has succesfully been blocked
(its Focusable::state
was either Inert
or Prioritized
).
Limitations
- If all the children of a menu are blocked, when activating the menu’s parent, the block state of the last active focusable will be ignored.
- When
FocusOn
to an focusable in a menu reachable from an blocked focusable, its block state will be ignored.
sourcepub fn unblock(&mut self) -> bool
pub fn unblock(&mut self) -> bool
Allow this Focusable
to gain focus again,
setting it to FocusState::Inert
.
Returns true
if self
’s state was FocusState::Blocked
.
Trait Implementations§
source§impl GetTypeRegistration for Focusablewhere
FocusState: Reflect,
FocusAction: Reflect,
impl GetTypeRegistration for Focusablewhere FocusState: Reflect, FocusAction: Reflect,
fn get_type_registration() -> TypeRegistration
source§impl Reflect for Focusablewhere
FocusState: Reflect,
FocusAction: Reflect,
impl Reflect for Focusablewhere FocusState: Reflect, FocusAction: Reflect,
source§fn get_type_info(&self) -> &'static TypeInfo
fn get_type_info(&self) -> &'static TypeInfo
TypeInfo
] of the underlying type. Read moresource§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
.source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read moresource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
source§impl Struct for Focusablewhere
FocusState: Reflect,
FocusAction: Reflect,
impl Struct for Focusablewhere FocusState: Reflect, FocusAction: Reflect,
source§fn field(&self, name: &str) -> Option<&dyn Reflect>
fn field(&self, name: &str) -> Option<&dyn Reflect>
name
as a &dyn Reflect
.source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
name
as a
&mut dyn Reflect
.source§fn field_at(&self, index: usize) -> Option<&dyn Reflect>
fn field_at(&self, index: usize) -> Option<&dyn Reflect>
index
as a
&dyn Reflect
.source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
index
as a &mut dyn Reflect
.source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct
].source§impl Typed for Focusablewhere
FocusState: Reflect,
FocusAction: Reflect,
impl Typed for Focusablewhere FocusState: Reflect, FocusAction: Reflect,
Auto Trait Implementations§
impl RefUnwindSafe for Focusable
impl Send for Focusable
impl Sync for Focusable
impl Unpin for Focusable
impl UnwindSafe for Focusable
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
[ShaderType
] for self
. When used in [AsBindGroup
]
derives, it is safe to assume that all images in self
exist.§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId) )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> Cwhere F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a, Aligned>,
fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_, Aligned>) )
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given [World]§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere S: Struct,
§impl<T> GetPath for Twhere
T: Reflect,
impl<T> GetPath for Twhere T: Reflect,
§fn reflect_path<'r, 'p>(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'r, 'p>( &'r self, path: &'p str ) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn reflect_path_mut<'r, 'p>(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'r, 'p>( &'r mut self, path: &'p str ) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more