eekkey: Moved state to KeyState

This commit is contained in:
Dorota Czaplejewicz
2019-08-03 12:35:57 +00:00
parent ad86cb531a
commit fb93e25833
11 changed files with 311 additions and 269 deletions

View File

@ -31,6 +31,7 @@
#include "eek-section.h"
#include "eek-keyboard.h"
#include "src/keyboard.h"
#include "src/symbol.h"
#include "eek-key.h"
@ -53,9 +54,8 @@ static guint signals[LAST_SIGNAL] = { 0, };
typedef struct _EekKeyPrivate
{
guint keycode;
struct squeek_symbols *symbols;
gulong oref; // UI outline reference
gboolean is_pressed;
struct squeek_key *state;
gboolean is_locked;
} EekKeyPrivate;
@ -89,7 +89,7 @@ eek_key_finalize (GObject *object)
EekKey *self = EEK_KEY (object);
EekKeyPrivate *priv = eek_key_get_instance_private (self);
squeek_symbols_free (priv->symbols);
squeek_key_free (priv->state);
G_OBJECT_CLASS (eek_key_parent_class)->finalize (object);
}
@ -211,7 +211,7 @@ static void
eek_key_init (EekKey *self)
{
EekKeyPrivate *priv = eek_key_get_instance_private (self);
priv->symbols = squeek_symbols_new ();
priv->state = squeek_key_new (0);
}
/**
@ -253,23 +253,6 @@ eek_key_get_keycode (EekKey *key)
return priv->keycode;
}
/**
* eek_key_get_symbol_matrix:
* @key: an #EekKey
*
* Get the symbol matrix of @key.
* Returns: (transfer none): #EekSymbolMatrix or %NULL
*/
struct squeek_symbols *
eek_key_get_symbol_matrix (EekKey *key)
{
g_return_val_if_fail (EEK_IS_KEY(key), NULL);
EekKeyPrivate *priv = eek_key_get_instance_private (key);
return priv->symbols;
}
/**
* eek_key_get_symbol_at_index:
* @key: an #EekKey
@ -286,8 +269,8 @@ eek_key_get_symbol_at_index (EekKey *key,
gint group,
guint level)
{
struct squeek_symbols *symbols = eek_key_get_symbol_matrix(key);
return squeek_symbols_get(symbols, level);
EekKeyPrivate *priv = eek_key_get_instance_private (key);
return squeek_key_get_symbol(priv->state, level);
}
/**
@ -341,7 +324,7 @@ eek_key_is_pressed (EekKey *key)
EekKeyPrivate *priv = eek_key_get_instance_private (key);
return priv->is_pressed;
return (bool)squeek_key_is_pressed(priv->state);
}
/**
@ -366,5 +349,10 @@ void eek_key_set_pressed(EekKey *key, gboolean value)
EekKeyPrivate *priv = eek_key_get_instance_private (key);
priv->is_pressed = value;
squeek_key_set_pressed(priv->state, value);
}
struct squeek_key *eek_key_get_state(EekKey *key) {
EekKeyPrivate *priv = eek_key_get_instance_private (key);
return priv->state;
}

View File

@ -58,8 +58,7 @@ GType eek_key_get_type (void) G_GNUC_CONST;
void eek_key_set_keycode (EekKey *key,
guint keycode);
guint eek_key_get_keycode (EekKey *key);
struct squeek_symbols *
eek_key_get_symbol_matrix (EekKey *key);
struct squeek_key *eek_key_get_state(EekKey *key);
struct squeek_symbol *eek_key_get_symbol_at_index (EekKey *key,
gint group,
guint level);

View File

@ -763,7 +763,7 @@ eek_keyboard_get_keymap(EekKeyboard *keyboard)
// FIXME: free
const char *key_str = squeek_key_to_keymap_entry(
(char*)key_name,
eek_key_get_symbol_matrix(key)
eek_key_get_state(key)
);
current = symbols;
symbols = g_strconcat(current, key_str, NULL);

View File

@ -86,10 +86,6 @@ static void render_key (EekRenderer *self,
cairo_t *cr,
EekKey *key, guint level,
gboolean active);
static void on_symbol_index_changed (EekKeyboard *keyboard,
gint group,
gint level,
gpointer user_data);
struct _CreateKeyboardSurfaceCallbackData {
cairo_t *cr;
@ -715,16 +711,6 @@ invalidate (EekRenderer *renderer)
}
}
static void
on_symbol_index_changed (EekKeyboard *keyboard,
gint group,
gint level,
gpointer user_data)
{
EekRenderer *renderer = user_data;
invalidate (renderer);
}
EekRenderer *
eek_renderer_new (EekKeyboard *keyboard,
PangoContext *pcontext,

View File

@ -30,6 +30,7 @@
#include "eek-keyboard.h"
#include "eek-section.h"
#include "eek-key.h"
#include "src/keyboard.h"
#include "src/symbol.h"
#include "squeekboard-resources.h"
@ -748,8 +749,8 @@ symbols_end_element_callback (GMarkupParseContext *pcontext,
g_strcmp0 (element_name, "keysym") == 0 ||
g_strcmp0 (element_name, "text") == 0) {
squeek_symbols_add(
eek_key_get_symbol_matrix(data->key),
squeek_key_add_symbol(
eek_key_get_state(data->key),
element_name,
text,
data->keyval,