Don't cache group/level in EekKey.
This commit is contained in:
		
							
								
								
									
										179
									
								
								eek/eek-key.c
									
									
									
									
									
								
							
							
						
						
									
										179
									
								
								eek/eek-key.c
									
									
									
									
									
								
							@ -35,6 +35,8 @@
 | 
			
		||||
#include "config.h"
 | 
			
		||||
#endif  /* HAVE_CONFIG_H */
 | 
			
		||||
#include "eek-key.h"
 | 
			
		||||
#include "eek-section.h"
 | 
			
		||||
#include "eek-keyboard.h"
 | 
			
		||||
#include "eek-keysym.h"
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
@ -44,8 +46,6 @@ enum {
 | 
			
		||||
    PROP_COLUMN,
 | 
			
		||||
    PROP_ROW,
 | 
			
		||||
    PROP_OUTLINE,
 | 
			
		||||
    PROP_GROUP,
 | 
			
		||||
    PROP_LEVEL,
 | 
			
		||||
    PROP_LAST
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -70,8 +70,6 @@ struct _EekKeyPrivate
 | 
			
		||||
    gint column;
 | 
			
		||||
    gint row;
 | 
			
		||||
    EekOutline *outline;
 | 
			
		||||
    gint group;
 | 
			
		||||
    gint level;
 | 
			
		||||
    gboolean is_pressed;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -140,18 +138,6 @@ eek_key_real_get_keysyms (EekKey *self,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static guint
 | 
			
		||||
eek_key_real_get_keysym (EekKey *self)
 | 
			
		||||
{
 | 
			
		||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
			
		||||
    gint num_keysyms = priv->keysyms.num_groups * priv->keysyms.num_levels;
 | 
			
		||||
 | 
			
		||||
    if (num_keysyms == 0)
 | 
			
		||||
        return EEK_INVALID_KEYSYM;
 | 
			
		||||
    return priv->keysyms.data[priv->group * priv->keysyms.num_levels +
 | 
			
		||||
                              priv->level];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_key_real_set_index (EekKey *self,
 | 
			
		||||
                        gint    column,
 | 
			
		||||
@ -192,38 +178,6 @@ eek_key_real_get_outline (EekKey *self)
 | 
			
		||||
    return priv->outline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_key_real_set_keysym_index (EekKey *self,
 | 
			
		||||
                               gint    group,
 | 
			
		||||
                               gint    level)
 | 
			
		||||
{
 | 
			
		||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (0 <= group);
 | 
			
		||||
    if (group >= priv->keysyms.num_groups)
 | 
			
		||||
        group = 0;
 | 
			
		||||
    g_return_if_fail (0 <= level);
 | 
			
		||||
    if (level >= priv->keysyms.num_levels)
 | 
			
		||||
        level = 0;
 | 
			
		||||
    priv->group = group;
 | 
			
		||||
    priv->level = level;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_key_real_get_keysym_index (EekKey *self,
 | 
			
		||||
                               gint   *group,
 | 
			
		||||
                               gint   *level)
 | 
			
		||||
{
 | 
			
		||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (group);
 | 
			
		||||
    g_return_if_fail (level);
 | 
			
		||||
    if (group)
 | 
			
		||||
        *group = priv->group;
 | 
			
		||||
    if (level)
 | 
			
		||||
        *level = priv->level;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
eek_key_real_is_pressed (EekKey *self)
 | 
			
		||||
{
 | 
			
		||||
@ -271,7 +225,6 @@ eek_key_set_property (GObject      *object,
 | 
			
		||||
{
 | 
			
		||||
    EekKeysymMatrix *matrix;
 | 
			
		||||
    gint column, row;
 | 
			
		||||
    gint group, level;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (EEK_IS_KEY(object));
 | 
			
		||||
    switch (prop_id) {
 | 
			
		||||
@ -296,16 +249,6 @@ eek_key_set_property (GObject      *object,
 | 
			
		||||
    case PROP_OUTLINE:
 | 
			
		||||
        eek_key_set_outline (EEK_KEY(object), g_value_get_pointer (value));
 | 
			
		||||
        break;
 | 
			
		||||
    case PROP_GROUP:
 | 
			
		||||
        eek_key_get_keysym_index (EEK_KEY(object), &group, &level);
 | 
			
		||||
        eek_key_set_keysym_index (EEK_KEY(object), g_value_get_int (value),
 | 
			
		||||
                                  level);
 | 
			
		||||
        break;
 | 
			
		||||
    case PROP_LEVEL:
 | 
			
		||||
        eek_key_get_keysym_index (EEK_KEY(object), &group, &level);
 | 
			
		||||
        eek_key_set_keysym_index (EEK_KEY(object), group,
 | 
			
		||||
                                  g_value_get_int (value));
 | 
			
		||||
        break;
 | 
			
		||||
    default:
 | 
			
		||||
        g_object_set_property (object,
 | 
			
		||||
                               g_param_spec_get_name (pspec),
 | 
			
		||||
@ -345,14 +288,6 @@ eek_key_get_property (GObject    *object,
 | 
			
		||||
    case PROP_OUTLINE:
 | 
			
		||||
        g_value_set_pointer (value, eek_key_get_outline (EEK_KEY(object)));
 | 
			
		||||
        break;
 | 
			
		||||
    case PROP_GROUP:
 | 
			
		||||
        eek_key_get_keysym_index (EEK_KEY(object), &group, &level);
 | 
			
		||||
        g_value_set_int (value, group);
 | 
			
		||||
        break;
 | 
			
		||||
    case PROP_LEVEL:
 | 
			
		||||
        eek_key_get_keysym_index (EEK_KEY(object), &group, &level);
 | 
			
		||||
        g_value_set_int (value, level);
 | 
			
		||||
        break;
 | 
			
		||||
    default:
 | 
			
		||||
        g_object_get_property (object,
 | 
			
		||||
                               g_param_spec_get_name (pspec),
 | 
			
		||||
@ -374,13 +309,10 @@ eek_key_class_init (EekKeyClass *klass)
 | 
			
		||||
    klass->set_keycode = eek_key_real_set_keycode;
 | 
			
		||||
    klass->set_keysyms = eek_key_real_set_keysyms;
 | 
			
		||||
    klass->get_keysyms = eek_key_real_get_keysyms;
 | 
			
		||||
    klass->get_keysym = eek_key_real_get_keysym;
 | 
			
		||||
    klass->set_index = eek_key_real_set_index;
 | 
			
		||||
    klass->get_index = eek_key_real_get_index;
 | 
			
		||||
    klass->set_outline = eek_key_real_set_outline;
 | 
			
		||||
    klass->get_outline = eek_key_real_get_outline;
 | 
			
		||||
    klass->set_keysym_index = eek_key_real_set_keysym_index;
 | 
			
		||||
    klass->get_keysym_index = eek_key_real_get_keysym_index;
 | 
			
		||||
    klass->is_pressed = eek_key_real_is_pressed;
 | 
			
		||||
 | 
			
		||||
    gobject_class->set_property = eek_key_set_property;
 | 
			
		||||
@ -453,30 +385,6 @@ eek_key_class_init (EekKeyClass *klass)
 | 
			
		||||
                                  G_PARAM_READWRITE);
 | 
			
		||||
    g_object_class_install_property (gobject_class, PROP_OUTLINE, pspec);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * EekKey:group:
 | 
			
		||||
     *
 | 
			
		||||
     * The column index of #EekKey in the symbol matrix #EekKey:keysyms.
 | 
			
		||||
     */
 | 
			
		||||
    pspec = g_param_spec_int ("group",
 | 
			
		||||
                              "Group",
 | 
			
		||||
                              "Current group of the key",
 | 
			
		||||
                              0, 64, 0,
 | 
			
		||||
                              G_PARAM_READWRITE);
 | 
			
		||||
    g_object_class_install_property (gobject_class, PROP_GROUP, pspec);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * EekKey:level:
 | 
			
		||||
     *
 | 
			
		||||
     * The row index of #EekKey in the symbol matrix #EekKey:keysyms.
 | 
			
		||||
     */
 | 
			
		||||
    pspec = g_param_spec_int ("level",
 | 
			
		||||
                              "Level",
 | 
			
		||||
                              "Current level of the key",
 | 
			
		||||
                              0, 3, 0,
 | 
			
		||||
                              G_PARAM_READWRITE);
 | 
			
		||||
    g_object_class_install_property (gobject_class, PROP_LEVEL, pspec);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * EekKey::pressed:
 | 
			
		||||
     * @key: an #EekKey
 | 
			
		||||
@ -522,7 +430,6 @@ eek_key_init (EekKey *self)
 | 
			
		||||
    memset (&priv->keysyms, 0, sizeof priv->keysyms);
 | 
			
		||||
    priv->column = priv->row = 0;
 | 
			
		||||
    priv->outline = NULL;
 | 
			
		||||
    priv->group = priv->level = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -606,8 +513,50 @@ eek_key_get_keysyms (EekKey *key,
 | 
			
		||||
guint
 | 
			
		||||
eek_key_get_keysym (EekKey *key)
 | 
			
		||||
{
 | 
			
		||||
    g_return_val_if_fail (EEK_IS_KEY(key), EEK_INVALID_KEYSYM);
 | 
			
		||||
    return EEK_KEY_GET_CLASS(key)->get_keysym (key);
 | 
			
		||||
    gint group, level;
 | 
			
		||||
    EekElement *parent;
 | 
			
		||||
 | 
			
		||||
    g_return_val_if_fail (EEK_IS_KEY (key), EEK_INVALID_KEYSYM);
 | 
			
		||||
 | 
			
		||||
    parent = eek_element_get_parent (EEK_ELEMENT(key));
 | 
			
		||||
    g_return_val_if_fail (EEK_IS_SECTION(parent), EEK_INVALID_KEYSYM);
 | 
			
		||||
 | 
			
		||||
    parent = eek_element_get_parent (parent);
 | 
			
		||||
    g_return_val_if_fail (EEK_IS_KEYBOARD(parent), EEK_INVALID_KEYSYM);
 | 
			
		||||
 | 
			
		||||
    eek_keyboard_get_keysym_index (EEK_KEYBOARD(parent), &group, &level);
 | 
			
		||||
 | 
			
		||||
    return eek_key_get_keysym_at_index (key, group, level);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * eek_key_get_keysym_at_index:
 | 
			
		||||
 * @key: an #EekKey
 | 
			
		||||
 * @group: group index of the keysym matrix
 | 
			
		||||
 * @level: level index of the keysym matrix
 | 
			
		||||
 *
 | 
			
		||||
 * Get the symbol at (@group, @level) in the keysym matrix of @key.
 | 
			
		||||
 * Returns: a symbol or %EEK_INVALID_KEYSYM on failure
 | 
			
		||||
 */
 | 
			
		||||
guint
 | 
			
		||||
eek_key_get_keysym_at_index (EekKey *key,
 | 
			
		||||
                             gint    group,
 | 
			
		||||
                             gint    level)
 | 
			
		||||
{
 | 
			
		||||
    EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(key);
 | 
			
		||||
    gint num_keysyms = priv->keysyms.num_groups * priv->keysyms.num_levels;
 | 
			
		||||
    gint g, l;
 | 
			
		||||
    EekElement *parent;
 | 
			
		||||
 | 
			
		||||
    if (num_keysyms == 0)
 | 
			
		||||
        return EEK_INVALID_KEYSYM;
 | 
			
		||||
 | 
			
		||||
    if (group >= priv->keysyms.num_groups)
 | 
			
		||||
        return EEK_INVALID_KEYSYM;
 | 
			
		||||
    if (level >= priv->keysyms.num_levels)
 | 
			
		||||
        return EEK_INVALID_KEYSYM;
 | 
			
		||||
 | 
			
		||||
    return priv->keysyms.data[group * priv->keysyms.num_levels + level];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -675,42 +624,6 @@ eek_key_get_outline (EekKey *key)
 | 
			
		||||
    return EEK_KEY_GET_CLASS(key)->get_outline (key);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * eek_key_set_keysym_index:
 | 
			
		||||
 * @key: an #EekKey
 | 
			
		||||
 * @group: group (row) index of @key
 | 
			
		||||
 * @level: level (column) index of @key
 | 
			
		||||
 *
 | 
			
		||||
 * Set the current group and/or level index of @key in its symbol
 | 
			
		||||
 * matrix to @group and @level.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
eek_key_set_keysym_index (EekKey *key,
 | 
			
		||||
                          gint    group,
 | 
			
		||||
                          gint    level)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
			
		||||
    EEK_KEY_GET_CLASS(key)->set_keysym_index (key, group, level);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * eek_key_get_keysym_index:
 | 
			
		||||
 * @key: an #EekKey
 | 
			
		||||
 * @group: pointer where group (row) index of @key will be stored
 | 
			
		||||
 * @level: pointer where level (column) index of @key will be stored
 | 
			
		||||
 *
 | 
			
		||||
 * Get the current group and/or level index of @key in its symbol
 | 
			
		||||
 * matrix.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
eek_key_get_keysym_index (EekKey *key,
 | 
			
		||||
                          gint   *group,
 | 
			
		||||
                          gint   *level)
 | 
			
		||||
{
 | 
			
		||||
    g_return_if_fail (EEK_IS_KEY(key));
 | 
			
		||||
    EEK_KEY_GET_CLASS(key)->get_keysym_index (key, group, level);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * eek_key_is_pressed:
 | 
			
		||||
 * @key: an #EekKey
 | 
			
		||||
 | 
			
		||||
@ -57,8 +57,6 @@ struct _EekKey
 | 
			
		||||
 * section
 | 
			
		||||
 * @set_outline: virtual function for setting outline shape of the key
 | 
			
		||||
 * @get_outline: virtual function for getting outline shape of the key
 | 
			
		||||
 * @set_keysym_index: virtual function for setting group and level of the key
 | 
			
		||||
 * @get_keysym_index: virtual function for getting group and level of the key
 | 
			
		||||
 * @pressed: class handler for #EekKey::pressed signal
 | 
			
		||||
 * @released: class handler for #EekKey::released signal
 | 
			
		||||
 * @is_pressed: virtual function for getting whether the key is pressed
 | 
			
		||||
@ -80,7 +78,6 @@ struct _EekKeyClass
 | 
			
		||||
                                      guint     **keysyms,
 | 
			
		||||
                                      gint       *num_groups,
 | 
			
		||||
                                      gint       *num_levels);
 | 
			
		||||
    guint       (* get_keysym)       (EekKey     *self);
 | 
			
		||||
 | 
			
		||||
    void        (* set_index)        (EekKey     *self,
 | 
			
		||||
                                      gint        column,
 | 
			
		||||
@ -93,12 +90,6 @@ struct _EekKeyClass
 | 
			
		||||
                                      EekOutline *outline);
 | 
			
		||||
    EekOutline *(* get_outline)      (EekKey     *self);
 | 
			
		||||
 | 
			
		||||
    void        (* set_keysym_index) (EekKey     *self,
 | 
			
		||||
                                      gint        group,
 | 
			
		||||
                                      gint        level);
 | 
			
		||||
    void        (* get_keysym_index) (EekKey     *self,
 | 
			
		||||
                                      gint       *group,
 | 
			
		||||
                                      gint       *level);
 | 
			
		||||
    gboolean    (* is_pressed)       (EekKey     *self);
 | 
			
		||||
 | 
			
		||||
    /* signals */
 | 
			
		||||
@ -110,39 +101,36 @@ struct _EekKeyClass
 | 
			
		||||
    gpointer pdummy[23];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
GType       eek_key_get_type         (void) G_GNUC_CONST;
 | 
			
		||||
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);
 | 
			
		||||
void        eek_key_set_keysyms      (EekKey     *key,
 | 
			
		||||
                                      guint      *keysyms,
 | 
			
		||||
                                      gint        num_groups,
 | 
			
		||||
                                      gint        num_levels);
 | 
			
		||||
void        eek_key_get_keysyms      (EekKey     *key,
 | 
			
		||||
                                      guint     **keysyms,
 | 
			
		||||
                                      gint       *num_groups,
 | 
			
		||||
                                      gint       *num_levels);
 | 
			
		||||
guint       eek_key_get_keysym       (EekKey     *key);
 | 
			
		||||
void        eek_key_set_keycode         (EekKey     *key,
 | 
			
		||||
                                         guint       keycode);
 | 
			
		||||
guint       eek_key_get_keycode         (EekKey     *key);
 | 
			
		||||
void        eek_key_set_keysyms         (EekKey     *key,
 | 
			
		||||
                                         guint      *keysyms,
 | 
			
		||||
                                         gint        num_groups,
 | 
			
		||||
                                         gint        num_levels);
 | 
			
		||||
void        eek_key_get_keysyms         (EekKey     *key,
 | 
			
		||||
                                         guint     **keysyms,
 | 
			
		||||
                                         gint       *num_groups,
 | 
			
		||||
                                         gint       *num_levels);
 | 
			
		||||
guint       eek_key_get_keysym          (EekKey     *key);
 | 
			
		||||
guint       eek_key_get_keysym_at_index (EekKey     *key,
 | 
			
		||||
                                         gint        group,
 | 
			
		||||
                                         gint        level);
 | 
			
		||||
 | 
			
		||||
void        eek_key_set_index        (EekKey     *key,
 | 
			
		||||
                                      gint        column,
 | 
			
		||||
                                      gint        row);
 | 
			
		||||
void        eek_key_get_index        (EekKey     *key,
 | 
			
		||||
                                      gint       *column,
 | 
			
		||||
                                      gint       *row);
 | 
			
		||||
void        eek_key_set_index           (EekKey     *key,
 | 
			
		||||
                                         gint        column,
 | 
			
		||||
                                         gint        row);
 | 
			
		||||
void        eek_key_get_index           (EekKey     *key,
 | 
			
		||||
                                         gint       *column,
 | 
			
		||||
                                         gint       *row);
 | 
			
		||||
 | 
			
		||||
void        eek_key_set_outline      (EekKey     *key,
 | 
			
		||||
                                      EekOutline *outline);
 | 
			
		||||
EekOutline *eek_key_get_outline      (EekKey     *key);
 | 
			
		||||
void        eek_key_set_outline         (EekKey     *key,
 | 
			
		||||
                                         EekOutline *outline);
 | 
			
		||||
EekOutline *eek_key_get_outline         (EekKey     *key);
 | 
			
		||||
 | 
			
		||||
void        eek_key_set_keysym_index (EekKey     *key,
 | 
			
		||||
                                      gint        group,
 | 
			
		||||
                                      gint        level);
 | 
			
		||||
void        eek_key_get_keysym_index (EekKey     *key,
 | 
			
		||||
                                      gint       *group,
 | 
			
		||||
                                      gint       *level);
 | 
			
		||||
gboolean    eek_key_is_pressed       (EekKey     *key);
 | 
			
		||||
gboolean    eek_key_is_pressed          (EekKey     *key);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
#endif  /* EEK_KEY_H */
 | 
			
		||||
 | 
			
		||||
@ -66,48 +66,16 @@ struct _EekKeyboardPrivate
 | 
			
		||||
    EekLayout *layout;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _SetKeysymIndexCallbackData {
 | 
			
		||||
    gint group;
 | 
			
		||||
    gint level;
 | 
			
		||||
};
 | 
			
		||||
typedef struct _SetKeysymIndexCallbackData SetKeysymIndexCallbackData;
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
set_keysym_index_for_key (EekElement *element,
 | 
			
		||||
                          gpointer    user_data)
 | 
			
		||||
{
 | 
			
		||||
    SetKeysymIndexCallbackData *data;
 | 
			
		||||
 | 
			
		||||
    g_return_if_fail (EEK_IS_KEY(element));
 | 
			
		||||
 | 
			
		||||
    data = user_data;
 | 
			
		||||
    eek_key_set_keysym_index (EEK_KEY(element), data->group, data->level);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
set_keysym_index_for_section (EekElement *element,
 | 
			
		||||
                              gpointer user_data)
 | 
			
		||||
{
 | 
			
		||||
    eek_container_foreach_child (EEK_CONTAINER(element),
 | 
			
		||||
                                 set_keysym_index_for_key,
 | 
			
		||||
                                 user_data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_keyboard_real_set_keysym_index (EekKeyboard *self,
 | 
			
		||||
                                    gint         group,
 | 
			
		||||
                                    gint         level)
 | 
			
		||||
{
 | 
			
		||||
    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
			
		||||
    SetKeysymIndexCallbackData data;
 | 
			
		||||
 | 
			
		||||
    if (priv->group != group || priv->level != level) {
 | 
			
		||||
        data.group = priv->group = group;
 | 
			
		||||
        data.level = priv->level = level;
 | 
			
		||||
 | 
			
		||||
        eek_container_foreach_child (EEK_CONTAINER(self),
 | 
			
		||||
                                     set_keysym_index_for_section,
 | 
			
		||||
                                     &data);
 | 
			
		||||
        priv->group = group;
 | 
			
		||||
        priv->level = level;
 | 
			
		||||
 | 
			
		||||
        g_signal_emit_by_name (self, "keysym-index-changed", group, level);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -209,7 +209,6 @@ create_key (EekXkbLayout *layout,
 | 
			
		||||
    eek_key_set_keysyms (key, keysyms, num_groups, num_levels);
 | 
			
		||||
    if (keysyms)
 | 
			
		||||
        g_slice_free1 (num_keysyms * sizeof(guint), keysyms);
 | 
			
		||||
    eek_key_set_keysym_index (key, 0, 0);
 | 
			
		||||
    eek_key_set_outline (key, outline);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user