Handle keyboard activation (Enter/Space) on the focused element.
(&mut self, pressed: bool, released: bool)
| 6889 | |
| 6890 | /// Handle keyboard activation (Enter/Space) on the focused element. |
| 6891 | pub fn handle_keyboard_activation(&mut self, pressed: bool, released: bool) { |
| 6892 | if self.focused_element_id == 0 { |
| 6893 | return; |
| 6894 | } |
| 6895 | if pressed { |
| 6896 | let id_copy = self |
| 6897 | .layout_element_map |
| 6898 | .get(&self.focused_element_id) |
| 6899 | .map(|item| item.element_id.clone()); |
| 6900 | if let Some(id) = id_copy { |
| 6901 | self.pressed_element_ids = vec![id.clone()]; |
| 6902 | self.keyboard_press_this_frame_generation = self.release_query_generation(); |
| 6903 | if let Some(item) = self.layout_element_map.get_mut(&self.focused_element_id) { |
| 6904 | if let Some(ref mut callback) = item.on_press_fn { |
| 6905 | callback(id, PointerData::default()); |
| 6906 | } |
| 6907 | } |
| 6908 | } |
| 6909 | } |
| 6910 | if released { |
| 6911 | let pressed = std::mem::take(&mut self.pressed_element_ids); |
| 6912 | self.track_just_released_ids(&pressed); |
| 6913 | for eid in pressed.iter() { |
| 6914 | if let Some(item) = self.layout_element_map.get_mut(&eid.id) { |
| 6915 | if let Some(ref mut callback) = item.on_release_fn { |
| 6916 | callback(eid.clone(), PointerData::default()); |
| 6917 | } |
| 6918 | } |
| 6919 | } |
| 6920 | } |
| 6921 | } |
| 6922 | |
| 6923 | pub fn pointer_over(&self, element_id: Id) -> bool { |
| 6924 | self.pointer_over_ids.iter().any(|eid| eid.id == element_id.id) |