Fix object finalization.
Add XKL wrapper (not ready).
This commit is contained in:
		@ -68,13 +68,29 @@ eek_clutter_key_real_set_bounds (EekElement *self,
 | 
			
		||||
    clutter_actor_set_size (priv->actor, bounds->width, bounds->height);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_clutter_key_real_pressed (EekKey *key)
 | 
			
		||||
{
 | 
			
		||||
    EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
 | 
			
		||||
 | 
			
		||||
    if (priv->actor)
 | 
			
		||||
        g_signal_emit_by_name (priv->actor, "pressed");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_clutter_key_real_released (EekKey *key)
 | 
			
		||||
{
 | 
			
		||||
    EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
 | 
			
		||||
 | 
			
		||||
    if (priv->actor)
 | 
			
		||||
        g_signal_emit_by_name (priv->actor, "released");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
eek_clutter_key_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
    EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(object);
 | 
			
		||||
 | 
			
		||||
    /* No need for clutter_group_remove_all() since
 | 
			
		||||
       ClutterGroup#dispose() unrefs all the children. */
 | 
			
		||||
    if (priv->actor)
 | 
			
		||||
        g_object_unref (priv->actor);
 | 
			
		||||
    G_OBJECT_CLASS (eek_clutter_key_parent_class)->finalize (object);
 | 
			
		||||
@ -85,6 +101,7 @@ eek_clutter_key_class_init (EekClutterKeyClass *klass)
 | 
			
		||||
{
 | 
			
		||||
    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 | 
			
		||||
    EekElementClass *element_class = EEK_ELEMENT_CLASS (klass);
 | 
			
		||||
    EekKeyClass *key_class = EEK_KEY_CLASS (klass);
 | 
			
		||||
 | 
			
		||||
    g_type_class_add_private (gobject_class,
 | 
			
		||||
                              sizeof (EekClutterKeyPrivate));
 | 
			
		||||
@ -92,6 +109,10 @@ eek_clutter_key_class_init (EekClutterKeyClass *klass)
 | 
			
		||||
    element_class->set_name = eek_clutter_key_real_set_name;
 | 
			
		||||
    element_class->set_bounds = eek_clutter_key_real_set_bounds;
 | 
			
		||||
    gobject_class->finalize = eek_clutter_key_finalize;
 | 
			
		||||
 | 
			
		||||
    /* signals */
 | 
			
		||||
    key_class->pressed = eek_clutter_key_real_pressed;
 | 
			
		||||
    key_class->released = eek_clutter_key_real_released;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@ -106,7 +127,9 @@ ClutterActor *
 | 
			
		||||
eek_clutter_key_get_actor (EekClutterKey *key)
 | 
			
		||||
{
 | 
			
		||||
    EekClutterKeyPrivate *priv = EEK_CLUTTER_KEY_GET_PRIVATE(key);
 | 
			
		||||
    if (!priv->actor)
 | 
			
		||||
    if (!priv->actor) {
 | 
			
		||||
        priv->actor = eek_clutter_key_actor_new (EEK_KEY(key));
 | 
			
		||||
        g_object_ref_sink (priv->actor);
 | 
			
		||||
    }
 | 
			
		||||
    return priv->actor;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user