submission: Take over virtual_keyboard handling
This commit is contained in:
@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user