embedded_ui/focus.rs
1// use crate::{
2// el::{El, ElId},
3// event::{Event, EventResponse},
4// render::Renderer,
5// ui::UiCtx,
6// };
7
8// #[derive(Clone, Copy)]
9// enum FocusResult {
10// Child(ElId),
11// Outside(i32),
12// }
13
14// pub fn for_container<'a, Message, R: Renderer, E: Event, S>(
15// ctx: &mut UiCtx<Message>,
16// children: &[El<'a, Message, R, E, S>],
17// ) -> EventResponse<E> {
18// let new_focus_index = child_index as i32 + focus_offset;
19
20// if new_focus_index < 0 {
21// return FocusResult::Outside(new_focus_index);
22// }
23
24// let new_focused_child =
25// children.iter().filter_map(|child| child.id()).nth(new_focus_index as usize);
26
27// if let Some(new_focused_child) = new_focused_child {
28// FocusResult::Child(new_focused_child)
29// } else {
30// FocusResult::Outside(new_focus_index)
31// }
32// }