locking: Move to squeek_key

This commit is contained in:
Dorota Czaplejewicz
2019-08-13 18:20:45 +00:00
parent 1471a61993
commit 725b36ba79
4 changed files with 20 additions and 5 deletions

View File

@ -46,7 +46,6 @@ typedef struct _EekKeyPrivate
{ {
gulong oref; // UI outline reference gulong oref; // UI outline reference
struct squeek_key *state; struct squeek_key *state;
gboolean is_locked;
} EekKeyPrivate; } EekKeyPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (EekKey, eek_key, EEK_TYPE_ELEMENT) G_DEFINE_TYPE_WITH_PRIVATE (EekKey, eek_key, EEK_TYPE_ELEMENT)
@ -55,7 +54,7 @@ void
eek_key_set_locked (EekKey *self, gboolean value) eek_key_set_locked (EekKey *self, gboolean value)
{ {
EekKeyPrivate *priv = eek_key_get_instance_private (self); EekKeyPrivate *priv = eek_key_get_instance_private (self);
priv->is_locked = value; squeek_key_set_pressed(priv->state, value);
} }
static void static void
@ -261,7 +260,7 @@ eek_key_is_locked (EekKey *key)
EekKeyPrivate *priv = eek_key_get_instance_private (key); EekKeyPrivate *priv = eek_key_get_instance_private (key);
return priv->is_locked; return (bool)squeek_key_is_locked(priv->state);
} }
void eek_key_set_pressed(EekKey *key, gboolean value) void eek_key_set_pressed(EekKey *key, gboolean value)

View File

@ -59,8 +59,6 @@ enum {
VIEW_SYMBOLS VIEW_SYMBOLS
}; };
static guint signals[LAST_SIGNAL] = { 0, };
#define EEK_KEYBOARD_GET_PRIVATE(obj) \ #define EEK_KEYBOARD_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEYBOARD, EekKeyboardPrivate)) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EEK_TYPE_KEYBOARD, EekKeyboardPrivate))

View File

@ -15,6 +15,8 @@ void squeek_key_add_symbol(struct squeek_key* key,
const char *tooltip); const char *tooltip);
uint32_t squeek_key_is_pressed(struct squeek_key *key); uint32_t squeek_key_is_pressed(struct squeek_key *key);
void squeek_key_set_pressed(struct squeek_key *key, uint32_t pressed); void squeek_key_set_pressed(struct squeek_key *key, uint32_t pressed);
uint32_t squeek_key_is_locked(struct squeek_key *key);
void squeek_key_set_locked(struct squeek_key *key, uint32_t pressed);
uint32_t squeek_key_get_keycode(struct squeek_key *key); uint32_t squeek_key_get_keycode(struct squeek_key *key);
void squeek_key_set_keycode(struct squeek_key *key, uint32_t keycode); void squeek_key_set_keycode(struct squeek_key *key, uint32_t keycode);

View File

@ -27,6 +27,7 @@ pub mod c {
Box::into_raw(Box::new( Box::into_raw(Box::new(
KeyState { KeyState {
pressed: false, pressed: false,
locked: false,
keycode: keycode, keycode: keycode,
symbols: Vec::new(), symbols: Vec::new(),
} }
@ -53,6 +54,20 @@ pub mod c {
key.pressed = pressed != 0; key.pressed = pressed != 0;
} }
#[no_mangle]
pub extern "C"
fn squeek_key_is_locked(key: *const KeyState) -> u32 {
let key = unsafe { &*key };
return key.locked as u32;
}
#[no_mangle]
pub extern "C"
fn squeek_key_set_locked(key: *mut KeyState, locked: u32) {
let key = unsafe { &mut *key };
key.locked = locked != 0;
}
#[no_mangle] #[no_mangle]
pub extern "C" pub extern "C"
fn squeek_key_get_keycode(key: *const KeyState) -> u32 { fn squeek_key_get_keycode(key: *const KeyState) -> u32 {
@ -232,6 +247,7 @@ pub mod c {
#[derive(Debug)] #[derive(Debug)]
pub struct KeyState { pub struct KeyState {
pressed: bool, pressed: bool,
locked: bool,
keycode: u32, keycode: u32,
symbols: Vec<symbol::Symbol>, symbols: Vec<symbol::Symbol>,
} }