Path: blob/main/crates/bevy_input_focus/src/autofocus.rs
6595 views
//! Contains the [`AutoFocus`] component and related machinery.12use bevy_ecs::{lifecycle::HookContext, prelude::*, world::DeferredWorld};34use crate::InputFocus;56#[cfg(feature = "bevy_reflect")]7use bevy_reflect::{prelude::*, Reflect};89/// Indicates that this widget should automatically receive [`InputFocus`].10///11/// This can be useful for things like dialog boxes, the first text input in a form,12/// or the first button in a game menu.13///14/// The focus is swapped when this component is added15/// or an entity with this component is spawned.16#[derive(Debug, Default, Component, Copy, Clone)]17#[cfg_attr(18feature = "bevy_reflect",19derive(Reflect),20reflect(Debug, Default, Component, Clone)21)]22#[component(on_add = on_auto_focus_added)]23pub struct AutoFocus;2425fn on_auto_focus_added(mut world: DeferredWorld, HookContext { entity, .. }: HookContext) {26if let Some(mut input_focus) = world.get_resource_mut::<InputFocus>() {27input_focus.set(entity);28}29}303132