Fix for One Shot Layer not being cleaned up after some actions (#8832)
This commit is contained in:
		
							parent
							
								
									f7eb030e91
								
							
						
					
					
						commit
						9c1097e768
					
				
					 1 changed files with 9 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -192,7 +192,14 @@ void process_record(keyrecord_t *record) {
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!process_record_quantum(record)) return;
 | 
			
		||||
    if (!process_record_quantum(record)) {
 | 
			
		||||
#ifndef NO_ACTION_ONESHOT
 | 
			
		||||
        if (is_oneshot_layer_active() && record->event.pressed) {
 | 
			
		||||
            clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    process_record_handler(record);
 | 
			
		||||
    post_process_record_quantum(record);
 | 
			
		||||
| 
						 | 
				
			
			@ -231,7 +238,7 @@ void process_action(keyrecord_t *record, action_t action) {
 | 
			
		|||
#ifndef NO_ACTION_ONESHOT
 | 
			
		||||
    bool do_release_oneshot = false;
 | 
			
		||||
    // notice we only clear the one shot layer if the pressed key is not a modifier.
 | 
			
		||||
    if (is_oneshot_layer_active() && event.pressed && !IS_MOD(action.key.code)
 | 
			
		||||
    if (is_oneshot_layer_active() && event.pressed && (action.kind.id == ACT_USAGE || !IS_MOD(action.key.code))
 | 
			
		||||
#    ifdef SWAP_HANDS_ENABLE
 | 
			
		||||
        && !(action.kind.id == ACT_SWAP_HANDS && action.swap.code == OP_SH_ONESHOT)
 | 
			
		||||
#    endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue