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// }