Evas Object Events

Each of the evas objects on a given evas canvas can be manipulated independently. They send events, to which callbacks can be attached through evas_object_event_callback_add() and removed with evas_object_event_callback_del(). These events all relate to single objects, not the whole canvas.

Table of Contents

Adding and Removing Callbacks: evas_object_event_callback_add/del

Callbacks are added with evas_event_callback_add(). Its prototype is

void evas_object_event_callback_add(Evas_Object*         obj,
                                    Evas_Callback_Type   type,
                                    Evas_Object_Event_Cb func,
                                    const void*          data
                                   )
  • obj is the object to attach the callback to.
  • type is the type of event that triggers the callback (the list is in the next section).
  • func is the function that is called.
  • data is a pointer to additional data that is given as the argument to the callback. It is optional and NULL is an acceptable value.

The type of the callback function is defined as follows.

void (* Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj, void *event_info)

The callback function definition is similar to

void some_evas_object_event_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
  • data is the same as the data which was given as the parameter to evas_object_smart_callback_add().
  • e is the canvas on which the event occurred.
  • obj is the object to which the event happened.
  • event_info is data which depends on the object type and event at play. The documentation must be read for each event.

Types of Evas Object Events

The values are defined from the Evas_Callback_Type enum. Some of them are not used for evas_object_event_callback_add(), but are used in the next section.

  • EVAS_CALLBACK_MOUSE_IN: the pointer got over an object (with no other object between the two). This takes place no matter how the pointer becomes directly above the object. event_info in the callback is a pointer to an Evas_Event_Mouse_In struct.
  • EVAS_CALLBACK_MOUSE_OUT: triggered similarly to EVAS_CALLBACK_MOUSE_IN, but when the pointer goes outside an object's area. event_info in the callback is a pointer to an Evas_Event_Mouse_Out struct.
  • EVAS_CALLBACK_MOUSE_DOWN: a mouse button is pressed while the object is receiving events (either because the pointer is on top of the object or because the object had focus). event_info in the callback is a pointer to an Evas_Event_Mouse_Down struct.
  • EVAS_CALLBACK_MOUSE_UP: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Mouse_Up struct.
  • EVAS_CALLBACK_MOUSE_MOVE: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Mouse_Move struct.
  • EVAS_CALLBACK_MOUSE_WHEEL: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Mouse_Wheel struct.
  • EVAS_CALLBACK_MULTI_DOWN: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Multi_Down struct.
  • EVAS_CALLBACK_MULTI_UP: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Multi_Up struct.
  • EVAS_CALLBACK_MULTI_MOVE: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Multi_Move struct.
  • EVAS_CALLBACK_KEY_DOWN: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Key_Down struct.
  • EVAS_CALLBACK_KEY_UP: triggered similarly to EVAS_CALLBACK_MOUSE_DOWN. event_info in the callback is a pointer to an Evas_Event_Key_Up struct.
  • EVAS_CALLBACK_FOCUS_IN: the object gained focus. event_info in the callback is a pointer to an Evas_Event_Mouse_In struct.
  • EVAS_CALLBACK_FOCUS_OUT: the object lost focus. event_info in the callback is a pointer to an Evas_Event_Mouse_In struct.
  • EVAS_CALLBACK_SHOW: the object is shown by a call to evas_object_show(). event_info in the callback is NULL.
  • EVAS_CALLBACK_HIDE: the object is hidden by a call to evas_object_hide(). event_info in the callback is NULL.
  • EVAS_CALLBACK_MOVE: the object's origin was moved (origin is the top-left corner at the creation time of the object). event_info in the callback is NULL.
  • EVAS_CALLBACK_RESIZE: the object is resized. event_info in the callback is NULL.
  • EVAS_CALLBACK_RESTACK: the object is re-stacked by evas_object_stack_below(), evas_object_stack_above() or other events. event_info in the callback is NULL.
  • EVAS_CALLBACK_DEL: the object is deleted.
  • EVAS_CALLBACK_FREE: for internal use only. Do not use (the object resources are about to be freed). event_info in the callback is NULL.
  • EVAS_CALLBACK_HOLD: for internal use only. event_info in the callback is a pointer to an Evas_Event_Hold struct.
  • EVAS_CALLBACK_CHANGED_SIZE_HINTS: the size hints of the object changed.
  • EVAS_CALLBACK_IMAGE_PRELOADED: an image which was preloaded through evas_object_image_preload() is loaded. event_info in the callback is NULL.
  • EVAS_CALLBACK_IMAGE_UNLOADED: the image data is unloaded. event_info in the callback is NULL.