Bug fix: arrow keys won't move focus away from TextEdit #3352
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces
Event::set_focus_lock_filter
which lets you tell egui what events a widget has exclusive access to:Future work
The event filter was the simplest possible for what is needed today. In the future we should replace it with some sort of callback.
Alternatives
Another way to solve this would be that widgets mark events as handled/consumed. The widget-focus-move logic runs at the end of the frame, so it would just ignored consumed events.
One downside with that would be requiring attaching some
bool
to each event, which would require quite a bit of a refactor.Another problem is that it won't handle the case when several widgets are interested in events, since there is no guarantee which orders widgets will be executed (it is immediate mode!). The only thing that could work in that case is an event filter.