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