locked: Use keys instead of buttons
This commit is contained in:
		@ -55,7 +55,7 @@ struct squeek_button *squeek_view_find_button_by_position(struct squeek_view *vi
 | 
			
		||||
void
 | 
			
		||||
squeek_layout_place_contents(struct squeek_layout*);
 | 
			
		||||
struct squeek_view *squeek_layout_get_current_view(struct squeek_layout*);
 | 
			
		||||
void squeek_layout_set_state_from_press(struct squeek_layout* layout, LevelKeyboard *keyboard, struct squeek_button* button);
 | 
			
		||||
void squeek_layout_set_state_from_press(struct squeek_layout* layout, LevelKeyboard *keyboard, struct squeek_key* key);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
struct squeek_layout *squeek_load_layout(const char *type);
 | 
			
		||||
 | 
			
		||||
@ -262,9 +262,9 @@ pub mod c {
 | 
			
		||||
                angle: i32
 | 
			
		||||
            ) -> u32;
 | 
			
		||||
            
 | 
			
		||||
            pub fn eek_keyboard_set_button_locked(
 | 
			
		||||
            pub fn eek_keyboard_set_key_locked(
 | 
			
		||||
                keyboard: *mut LevelKeyboard,
 | 
			
		||||
                button: *const Button
 | 
			
		||||
                key: ::keyboard::c::CKeyState,
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
@ -273,32 +273,32 @@ pub mod c {
 | 
			
		||||
        fn squeek_layout_set_state_from_press(
 | 
			
		||||
            layout: *mut Layout,
 | 
			
		||||
            keyboard: *mut LevelKeyboard,
 | 
			
		||||
            button_ptr: *const Button,
 | 
			
		||||
            key: ::keyboard::c::CKeyState,
 | 
			
		||||
        ) {
 | 
			
		||||
            let layout = unsafe { &mut *layout };
 | 
			
		||||
            let button = unsafe { &*button_ptr };
 | 
			
		||||
            // don't want to leave this borrowed in the function body
 | 
			
		||||
            let state = {
 | 
			
		||||
                let state = button.state.borrow();
 | 
			
		||||
                state.clone()
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            let view_name = match state.symbol.action {
 | 
			
		||||
            let view_name = match key.to_owned().symbol.action {
 | 
			
		||||
                ::symbol::Action::SetLevel(name) => {
 | 
			
		||||
                    Some(name.clone())
 | 
			
		||||
                },
 | 
			
		||||
                ::symbol::Action::LockLevel { lock, unlock } => {
 | 
			
		||||
                    let mut current_state = button.state.borrow_mut();
 | 
			
		||||
                    current_state.locked ^= true;
 | 
			
		||||
                    if current_state.locked {
 | 
			
		||||
                    let locked = {
 | 
			
		||||
                        let key = key.clone_ref();
 | 
			
		||||
                        let mut key = key.borrow_mut();
 | 
			
		||||
                        key.locked ^= true;
 | 
			
		||||
                        key.locked
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                    if locked {
 | 
			
		||||
                        unsafe {
 | 
			
		||||
                            eek_keyboard_set_button_locked(
 | 
			
		||||
                            eek_keyboard_set_key_locked(
 | 
			
		||||
                                keyboard,
 | 
			
		||||
                                button_ptr
 | 
			
		||||
                                key
 | 
			
		||||
                            )
 | 
			
		||||
                        };
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    Some(if state.locked { unlock } else { lock }.clone())
 | 
			
		||||
 | 
			
		||||
                    Some(if locked { lock } else { unlock }.clone())
 | 
			
		||||
                },
 | 
			
		||||
                _ => None,
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user