diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cocoa_bridge.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs index 11dc1c9..5f6cee7 100644 --- a/src/cocoa_bridge.rs +++ b/src/cocoa_bridge.rs @@ -224,8 +224,15 @@ mode <play><up> { let map = map_group.maps.get(trigger); let mode = map_group.modes.get(trigger); - if let Some(ref mut in_mode) = state.in_mode { - if let Some(mode) = map_group.modes.get(in_mode) { + if let Some(in_mode) = state.in_mode.clone() { + if let Some(mode) = map_group.modes.get(&in_mode) { + // Deactivate mode by pressing current mode trigger + if &in_mode[..] == trigger { + state.in_mode = None; + + return Some(KeyActionResult::new(ActionKind::Mode)) + } + if let Some(map) = mode.get(trigger) { return match map.kind { MapKind::Map => { |
