bevy/crates/bevy_input_focus
Alice Cecile b9123e74b6
Generalize bubbling focus input events to other kinds of input (#16876)
# Objective

The new `bevy_input_focus` crates has a tool to bubble input events up
the entity hierarchy, ending with the window, based on the currently
focused entity. Right now though, this only works for keyboard events!

Both `bevy_ui` buttons and `bevy_egui` should hook into this system
(primarily for contextual hotkeys), and we would like to drive
`leafwing_input_manager` via these events, to help resolve longstanding
pain around "absorbing" / "consuming" inputs based on focus. In order to
make that work properly though, we need gamepad support!

## Solution

The logic backing this has been changed to be generic for any cloneable
event types, and the machinery to make use of this externally has been
made `pub`.

Within the engine itself, I've added support for gamepad button and
scroll events, but nothing else. Mouse button / touch bubbling is
handled via bevy_picking, and mouse / gamepad motion doesn't really make
sense to bubble.

## Testing

The `tab_navigation` example continues to work, and CI is green.

## Future Work

I would like to add more complex UI examples to stress test this, but
not here please.

We should take advantage of the bubbled mouse scrolling when defining
scrolled widgets.
2024-12-18 01:04:50 +00:00
..
src Generalize bubbling focus input events to other kinds of input (#16876) 2024-12-18 01:04:50 +00:00
Cargo.toml Tab navigation framework for bevy_input_focus. (#16795) 2024-12-16 23:54:53 +00:00
README.md

Bevy Input Focus

License Crates.io Downloads Docs Discord