forked from enlightenment/efl
B-B-B-B-BETA BREAKER!
As for Evas callbacks, let's have a del_full() version for the Edje signals. SVN revision: 53997
This commit is contained in:
parent
61bb247e13
commit
db43f575ef
|
@ -542,6 +542,7 @@ typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, c
|
|||
/* edje_program.c */
|
||||
EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
|
||||
EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
|
||||
EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
|
||||
EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source);
|
||||
EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play);
|
||||
EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj);
|
||||
|
|
|
@ -150,6 +150,7 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch
|
|||
* pointer that was passed to this call will be returned.
|
||||
*
|
||||
* @see edje_object_signal_callback_add().
|
||||
* @see edje_object_signal_callback_del_full().
|
||||
*
|
||||
*/
|
||||
EAPI void *
|
||||
|
@ -194,6 +195,68 @@ edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const ch
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove a signal-triggered callback from an object.
|
||||
*
|
||||
* @param obj A valid Evas_Object handle.
|
||||
* @param emission The emission string.
|
||||
* @param source The source string.
|
||||
* @param func The callback function.
|
||||
* @param data The user data passed to the callback.
|
||||
* @return The data pointer
|
||||
*
|
||||
* This function removes a callback, previously attached to the
|
||||
* emittion of a signal, from the object @a obj. The parameters @a
|
||||
* emission, @a sourcei, @a func and @a data must match exactly those
|
||||
* passed to a previous call to edje_object_signal_callback_add(). The data
|
||||
* pointer that was passed to this call will be returned.
|
||||
*
|
||||
* @see edje_object_signal_callback_add().
|
||||
* @see edje_object_signal_callback_del().
|
||||
*
|
||||
*/
|
||||
EAPI void *
|
||||
edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
|
||||
{
|
||||
Edje *ed;
|
||||
Eina_List *l;
|
||||
Edje_Signal_Callback *escb;
|
||||
|
||||
if ((!emission) || (!source) || (!func)) return NULL;
|
||||
ed = _edje_fetch(obj);
|
||||
if (!ed) return NULL;
|
||||
if (ed->delete_me) return NULL;
|
||||
EINA_LIST_FOREACH(ed->callbacks, l, escb)
|
||||
{
|
||||
if ((escb->func == func) && (escb->data == data) &&
|
||||
((!escb->signal && !emission[0]) ||
|
||||
(escb->signal && !strcmp(escb->signal, emission))) &&
|
||||
((!escb->source && !source[0]) ||
|
||||
(escb->source && !strcmp(escb->source, source))))
|
||||
{
|
||||
void *data;
|
||||
|
||||
data = escb->data;
|
||||
if (ed->walking_callbacks)
|
||||
{
|
||||
escb->delete_me = 1;
|
||||
ed->delete_callbacks = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_edje_callbacks_patterns_clean(ed);
|
||||
|
||||
ed->callbacks = eina_list_remove_list(ed->callbacks, l);
|
||||
if (escb->signal) eina_stringshare_del(escb->signal);
|
||||
if (escb->source) eina_stringshare_del(escb->source);
|
||||
free(escb);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Send a signal to an edje object.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue