API break: proper Canvas events callback.
Canvas was (ab)using the same callback signature as Objects, so you always got a confusing NULL parameter. Just clean it up to be Evas_Object_Event_Cb and Evas_Event_Cb, each with its own signature. SVN revision: 46206
This commit is contained in:
parent
4e51efd326
commit
e133d2f300
|
@ -43,6 +43,10 @@
|
|||
|
||||
typedef enum _Evas_Callback_Type
|
||||
{
|
||||
/*
|
||||
* The following events are only for use with objects
|
||||
* evas_object_event_callback_add():
|
||||
*/
|
||||
EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */
|
||||
EVAS_CALLBACK_MOUSE_OUT, /**< Mouse Out Event */
|
||||
EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */
|
||||
|
@ -67,10 +71,20 @@ typedef enum _Evas_Callback_Type
|
|||
EVAS_CALLBACK_CHANGED_SIZE_HINTS, /**< Size hints changed event */
|
||||
EVAS_CALLBACK_IMAGE_PRELOADED, /**< Image as been preloaded */
|
||||
|
||||
|
||||
/*
|
||||
* The following events are only for use with canvas
|
||||
* evas_event_callback_add():
|
||||
*/
|
||||
|
||||
EVAS_CALLBACK_CANVAS_FOCUS_IN, /**< Canvas got focus as a whole */
|
||||
EVAS_CALLBACK_CANVAS_FOCUS_OUT, /**< Canvas lost focus as a whole */
|
||||
EVAS_CALLBACK_RENDER_FLUSH_PRE, /**< Called just before rendering is updated on the canvas target */
|
||||
EVAS_CALLBACK_RENDER_FLUSH_POST, /**< Called just after rendering is updated on the canvas target */
|
||||
|
||||
|
||||
|
||||
/* the following id no event number, but a sentinel: */
|
||||
EVAS_CALLBACK_LAST /**< keep as last element/sentinel -- not really an event */
|
||||
} Evas_Callback_Type; /**< The type of event to trigger the callback */
|
||||
|
||||
|
@ -712,7 +726,8 @@ typedef enum _Evas_Object_Pointer_Mode
|
|||
} Evas_Object_Pointer_Mode;
|
||||
|
||||
typedef void (*Evas_Smart_Cb) (void *data, Evas_Object *obj, void *event_info);
|
||||
typedef void (*Evas_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
typedef void (*Evas_Event_Cb) (void *data, Evas *e, void *event_info);
|
||||
typedef void (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -1246,9 +1261,9 @@ extern "C" {
|
|||
EAPI void evas_object_precise_is_inside_set (Evas_Object *obj, Eina_Bool precise) EINA_ARG_NONNULL(1);
|
||||
EAPI Eina_Bool evas_object_precise_is_inside_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
|
||||
|
||||
EAPI void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, Evas_Event_Cb func) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
|
||||
|
||||
EAPI void evas_event_callback_add (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data) EINA_ARG_NONNULL(1, 3);
|
||||
EAPI void *evas_event_callback_del (Evas *e, Evas_Callback_Type type, Evas_Event_Cb func) EINA_ARG_NONNULL(1, 3);
|
||||
|
|
|
@ -61,7 +61,7 @@ void
|
|||
evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
|
||||
{
|
||||
Eina_Inlist **l_mod = NULL, *l;
|
||||
|
||||
|
||||
_evas_walk(e);
|
||||
if (e->callbacks)
|
||||
{
|
||||
|
@ -74,8 +74,9 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
|
|||
fn = (Evas_Func_Node *)l;
|
||||
if ((fn->type == type) && (!fn->delete_me))
|
||||
{
|
||||
if (fn->func)
|
||||
fn->func(fn->data, e, NULL, event_info);
|
||||
Evas_Event_Cb func = fn->func;
|
||||
if (func)
|
||||
func(fn->data, e, event_info);
|
||||
}
|
||||
if (e->delete_me) break;
|
||||
}
|
||||
|
@ -140,8 +141,9 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
|
|||
fn = (Evas_Func_Node *)l;
|
||||
if ((fn->type == type) && (!fn->delete_me))
|
||||
{
|
||||
if (fn->func)
|
||||
fn->func(fn->data, obj->layer->evas, obj, event_info);
|
||||
Evas_Object_Event_Cb func = fn->func;
|
||||
if (func)
|
||||
func(fn->data, obj->layer->evas, obj, event_info);
|
||||
}
|
||||
if (obj->delete_me) break;
|
||||
}
|
||||
|
@ -355,7 +357,7 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
|
|||
* @endcode
|
||||
*/
|
||||
EAPI void
|
||||
evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
|
||||
evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
@ -408,7 +410,7 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (
|
|||
* @endcode
|
||||
*/
|
||||
EAPI void *
|
||||
evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info))
|
||||
evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
@ -465,7 +467,7 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (
|
|||
* @endcode
|
||||
*/
|
||||
EAPI void *
|
||||
evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
|
||||
evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
@ -496,7 +498,7 @@ evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, v
|
|||
}
|
||||
|
||||
EAPI void
|
||||
evas_event_callback_add(Evas *e, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
|
||||
evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
@ -525,7 +527,7 @@ evas_event_callback_add(Evas *e, Evas_Callback_Type type, void (*func) (void *da
|
|||
}
|
||||
|
||||
EAPI void *
|
||||
evas_event_callback_del(Evas *e, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info))
|
||||
evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
@ -554,7 +556,7 @@ evas_event_callback_del(Evas *e, Evas_Callback_Type type, void (*func) (void *da
|
|||
}
|
||||
|
||||
EAPI void *
|
||||
evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
|
||||
evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
|
||||
{
|
||||
/* MEM OK */
|
||||
Evas_Func_Node *fn;
|
||||
|
|
|
@ -490,7 +490,7 @@ struct _Evas_Object
|
|||
struct _Evas_Func_Node
|
||||
{
|
||||
EINA_INLIST;
|
||||
void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
void (*func) ();
|
||||
void *data;
|
||||
Evas_Callback_Type type;
|
||||
unsigned char delete_me : 1;
|
||||
|
|
Loading…
Reference in New Issue