MCPcopy Create free account
hub / github.com/TheRedDeveloper/ply-engine / handle_keyboard_activation

Method handle_keyboard_activation

src/engine.rs:6891–6921  ·  view source on GitHub ↗

Handle keyboard activation (Enter/Space) on the focused element.

(&mut self, pressed: bool, released: bool)

Source from the content-addressed store, hash-verified

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)

Calls 4

getMethod · 0.80
cloneMethod · 0.80