locking: Lock keys statelessly

Locking is not determined by button state any more, but rather based on the view active at the moment. If pressing/locking a key results in the current view being active, the key is active. If locking a key results in the current view, the unlock view is activated.
This commit is contained in:
Dorota Czaplejewicz
2020-02-02 15:41:47 +00:00
parent 97d8dfe4cb
commit 500c23beec
5 changed files with 40 additions and 41 deletions

View File

@ -3,7 +3,6 @@
use cairo;
use std::cell::RefCell;
use ::action::Action;
use ::keyboard;
use ::layout::{ Button, Layout };
use ::layout::c::{ EekGtkKeyboard, Point };
@ -53,13 +52,7 @@ mod c {
for (row_offset, row) in &view.get_rows() {
for (x_offset, button) in &row.buttons {
let state = RefCell::borrow(&button.state).clone();
let locked = match state.action {
Action::SetView(name) => name == layout.current_view,
Action::LockView { lock, unlock: _ } => {
lock == layout.current_view
},
_ => false,
};
let locked = state.action.is_active(&layout.current_view);
if state.pressed == keyboard::PressType::Pressed || locked {
render_button_at_position(
renderer, &cr,