diff --git a/editor/src/messages/input_mapper/input_mapper_message_handler.rs b/editor/src/messages/input_mapper/input_mapper_message_handler.rs index 528258b8..0ebb4ec2 100644 --- a/editor/src/messages/input_mapper/input_mapper_message_handler.rs +++ b/editor/src/messages/input_mapper/input_mapper_message_handler.rs @@ -46,13 +46,14 @@ impl InputMapperMessageHandler { } pub fn action_input_mapping(&self, action_to_find: &MessageDiscriminant) -> Vec { - let key_up = self.mapping.key_up.iter(); - let key_down = self.mapping.key_down.iter(); - let double_click = std::iter::once(&self.mapping.double_click); - let wheel_scroll = std::iter::once(&self.mapping.wheel_scroll); - let pointer_move = std::iter::once(&self.mapping.pointer_move); - - let all_key_mapping_entries = key_up.chain(key_down).chain(double_click).chain(wheel_scroll).chain(pointer_move); + let all_key_mapping_entries = std::iter::empty() + .chain(self.mapping.key_up.iter()) + .chain(self.mapping.key_down.iter()) + .chain(self.mapping.key_up_no_repeat.iter()) + .chain(self.mapping.key_down_no_repeat.iter()) + .chain(std::iter::once(&self.mapping.double_click)) + .chain(std::iter::once(&self.mapping.wheel_scroll)) + .chain(std::iter::once(&self.mapping.pointer_move)); let all_mapping_entries = all_key_mapping_entries.flat_map(|entry| entry.0.iter()); // Filter for the desired message @@ -69,15 +70,18 @@ impl InputMapperMessageHandler { // TODO: Use a safe solution eventually assert!( i < input_keyboard::NUMBER_OF_KEYS, - "Attempting to convert a Key with enum index {}, which is larger than the number of Key enums", - i + "Attempting to convert a Key with enum index {i}, which is larger than the number of Key enums", ); (i as u8).try_into().unwrap() }) .collect::>(); - if let InputMapperMessage::KeyDown(key) = entry.input { - keys.push(key); + match entry.input { + InputMapperMessage::KeyDown(key) => keys.push(key), + InputMapperMessage::KeyUp(key) => keys.push(key), + InputMapperMessage::KeyDownNoRepeat(key) => keys.push(key), + InputMapperMessage::KeyUpNoRepeat(key) => keys.push(key), + _ => (), } keys.sort_by(|a, b| { diff --git a/editor/src/messages/input_mapper/utility_types/misc.rs b/editor/src/messages/input_mapper/utility_types/misc.rs index 7e3d3cec..40d057be 100644 --- a/editor/src/messages/input_mapper/utility_types/misc.rs +++ b/editor/src/messages/input_mapper/utility_types/misc.rs @@ -121,19 +121,19 @@ pub enum ActionKeys { impl ActionKeys { pub fn to_keys(&mut self, action_input_mapping: &impl Fn(&MessageDiscriminant) -> Vec) -> String { match self { - ActionKeys::Action(action) => { + Self::Action(action) => { if let Some(keys) = action_input_mapping(action).get_mut(0) { let mut taken_keys = KeysGroup::default(); std::mem::swap(keys, &mut taken_keys); let description = taken_keys.to_string(); - *self = ActionKeys::Keys(taken_keys.into()); + *self = Self::Keys(taken_keys.into()); description } else { - *self = ActionKeys::Keys(KeysGroup::default().into()); + *self = Self::Keys(KeysGroup::default().into()); String::new() } } - ActionKeys::Keys(keys) => { + Self::Keys(keys) => { warn!("Calling `.to_keys()` on a `ActionKeys::Keys` is a mistake/bug. Keys are: {:?}.", keys); String::new() } diff --git a/frontend/src/components/views/Graph.svelte b/frontend/src/components/views/Graph.svelte index 22a8f74d..2e41cc48 100644 --- a/frontend/src/components/views/Graph.svelte +++ b/frontend/src/components/views/Graph.svelte @@ -653,7 +653,9 @@
- {@html node.thumbnailSvg} + {#if node.thumbnailSvg} + {@html node.thumbnailSvg} + {/if} {#if node.primaryOutput}