submission: Take over virtual_keyboard handling

This commit is contained in:
Dorota Czaplejewicz
2020-01-12 20:09:05 +00:00
parent aafecfac02
commit 326bb9319f
14 changed files with 147 additions and 77 deletions

View File

@ -17,12 +17,13 @@
* and those events SHOULD NOT cause any lost events.
* */
use ::imservice::IMService;
//use ::vkeyboard::VirtualKeyboard;
/// Temporary reexport to keep stuff based directly on virtual-keyboard working
/// until a unified handler appears and prompts a rework.
pub use vkeyboard::*;
use ::imservice::IMService;
/// Gathers stuff defined in C or called by C
pub mod c {
use super::*;
@ -30,6 +31,8 @@ pub mod c {
use std::os::raw::c_void;
use ::imservice::c::InputMethod;
use ::layout::c::LevelKeyboard;
use ::vkeyboard::c::ZwpVirtualKeyboardV1;
// The following defined in C
@ -45,6 +48,7 @@ pub mod c {
pub extern "C"
fn submission_new(
im: *mut InputMethod,
vk: ZwpVirtualKeyboardV1,
state_manager: *const StateManager
) -> *mut Submission {
let imservice = if im.is_null() {
@ -56,10 +60,12 @@ pub mod c {
Box::<Submission>::into_raw(Box::new(
Submission {
imservice,
virtual_keyboard: VirtualKeyboard(vk),
}
))
}
/// Use to initialize the UI reference
#[no_mangle]
pub extern "C"
fn submission_set_ui(submission: *mut Submission, ui_manager: *const UIManager) {
@ -75,10 +81,21 @@ pub mod c {
}
};
}
#[no_mangle]
pub extern "C"
fn submission_set_keyboard(submission: *mut Submission, keyboard: LevelKeyboard) {
if submission.is_null() {
panic!("Null submission pointer");
}
let submission: &mut Submission = unsafe { &mut *submission };
submission.virtual_keyboard.update_keymap(keyboard);
}
}
pub struct Submission {
// used by C callbacks internally, TODO: make use with virtual keyboard
#[allow(dead_code)]
imservice: Option<Box<IMService>>,
pub virtual_keyboard: VirtualKeyboard,
}