layout: Make handling presses uniform
This commit is contained in:
@ -332,11 +332,12 @@ pub mod c {
|
||||
.map(|place| place.button.state.clone())
|
||||
};
|
||||
|
||||
if let Some(mut state) = state {
|
||||
layout.press_key(
|
||||
if let Some(state) = state {
|
||||
seat::handle_press_key(
|
||||
layout,
|
||||
&VirtualKeyboard(virtual_keyboard),
|
||||
&mut state,
|
||||
Timestamp(time),
|
||||
&state,
|
||||
);
|
||||
// maybe TODO: draw on the display buffer here
|
||||
drawing::queue_redraw(ui_keyboard);
|
||||
@ -379,7 +380,7 @@ pub mod c {
|
||||
)})
|
||||
};
|
||||
|
||||
if let Some((mut state, _button, _view_position)) = button_info {
|
||||
if let Some((state, _button, _view_position)) = button_info {
|
||||
let mut found = false;
|
||||
for wrapped_key in pressed {
|
||||
let key: &Rc<RefCell<KeyState>> = wrapped_key.borrow();
|
||||
@ -397,7 +398,12 @@ pub mod c {
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
layout.press_key(&virtual_keyboard, &mut state, time);
|
||||
seat::handle_press_key(
|
||||
layout,
|
||||
&virtual_keyboard,
|
||||
time,
|
||||
&state,
|
||||
);
|
||||
// maybe TODO: draw on the display buffer here
|
||||
}
|
||||
} else {
|
||||
@ -653,24 +659,6 @@ impl Layout {
|
||||
}
|
||||
}
|
||||
|
||||
fn press_key(
|
||||
&mut self,
|
||||
virtual_keyboard: &VirtualKeyboard,
|
||||
rckey: &mut Rc<RefCell<KeyState>>,
|
||||
time: Timestamp,
|
||||
) {
|
||||
if !self.pressed_keys.insert(::util::Pointer(rckey.clone())) {
|
||||
eprintln!("Warning: key {:?} was already pressed", rckey);
|
||||
}
|
||||
let mut key = rckey.borrow_mut();
|
||||
virtual_keyboard.switch(
|
||||
&key.keycodes,
|
||||
PressType::Pressed,
|
||||
time,
|
||||
);
|
||||
key.pressed = PressType::Pressed;
|
||||
}
|
||||
|
||||
/// Calculates size without margins
|
||||
fn calculate_inner_size(&self) -> Size {
|
||||
Size {
|
||||
@ -864,6 +852,24 @@ mod seat {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn handle_press_key(
|
||||
layout: &mut Layout,
|
||||
virtual_keyboard: &VirtualKeyboard,
|
||||
time: Timestamp,
|
||||
rckey: &Rc<RefCell<KeyState>>,
|
||||
) {
|
||||
if !layout.pressed_keys.insert(::util::Pointer(rckey.clone())) {
|
||||
eprintln!("Warning: key {:?} was already pressed", rckey);
|
||||
}
|
||||
let mut key = rckey.borrow_mut();
|
||||
virtual_keyboard.switch(
|
||||
&key.keycodes,
|
||||
PressType::Pressed,
|
||||
time,
|
||||
);
|
||||
key.pressed = PressType::Pressed;
|
||||
}
|
||||
|
||||
pub fn handle_release_key(
|
||||
layout: &mut Layout,
|
||||
virtual_keyboard: &VirtualKeyboard,
|
||||
|
||||
Reference in New Issue
Block a user