libeek: add EekKey#is_pressed.

This commit is contained in:
Daiki Ueno
2011-01-22 11:24:01 +09:00
parent 12550f4bc3
commit 8399acda83
2 changed files with 35 additions and 7 deletions

View File

@ -72,6 +72,7 @@ struct _EekKeyPrivate
EekOutline *outline;
gint group;
gint level;
gboolean is_pressed;
};
static void
@ -223,19 +224,32 @@ eek_key_real_get_keysym_index (EekKey *self,
*level = priv->level;
}
static void
eek_key_real_pressed (EekKey *key)
static gboolean
eek_key_real_is_pressed (EekKey *self)
{
EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
return priv->is_pressed;
}
static void
eek_key_real_pressed (EekKey *self)
{
EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
priv->is_pressed = TRUE;
#if DEBUG
g_debug ("pressed %X", eek_key_get_keycode (key));
g_debug ("pressed %X", eek_key_get_keycode (self));
#endif
}
static void
eek_key_real_released (EekKey *key)
eek_key_real_released (EekKey *self)
{
EekKeyPrivate *priv = EEK_KEY_GET_PRIVATE(self);
priv->is_pressed = FALSE;
#if DEBUG
g_debug ("released %X", eek_key_get_keycode (key));
g_debug ("released %X", eek_key_get_keycode (self));
#endif
}
@ -367,6 +381,7 @@ eek_key_class_init (EekKeyClass *klass)
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;
gobject_class->get_property = eek_key_get_property;
@ -695,3 +710,10 @@ eek_key_get_keysym_index (EekKey *key,
g_return_if_fail (EEK_IS_KEY(key));
EEK_KEY_GET_CLASS(key)->get_keysym_index (key, group, level);
}
gboolean
eek_key_is_pressed (EekKey *key)
{
g_assert (EEK_IS_KEY(key));
return EEK_KEY_GET_CLASS(key)->is_pressed (key);
}

View File

@ -98,10 +98,15 @@ struct _EekKeyClass
void (* get_keysym_index) (EekKey *self,
gint *group,
gint *level);
gboolean (* is_pressed) (EekKey *self);
/* signals */
void (* pressed) (EekKey *key);
void (* released) (EekKey *key);
/*< private >*/
/* padding */
gpointer pdummy[23];
};
GType eek_key_get_type (void) G_GNUC_CONST;
@ -136,6 +141,7 @@ void eek_key_set_keysym_index (EekKey *key,
void eek_key_get_keysym_index (EekKey *key,
gint *group,
gint *level);
gboolean eek_key_is_pressed (EekKey *key);
G_END_DECLS
#endif /* EEK_KEY_H */