Ecore Evas Callbacks

Our example is remarkably simple, all it does is create an Ecore_Evas and register a callback for a bunch of events. What's interesting here is knowing when each of these callbacks will be called, however since that depends on the underlying windowing system there are no guarantees that all of the callbacks will be called for your windowing system. To know which callbacks will be called for your windowing system run the example and redirect the output to a file, and take a look at it.

Note
  Make sure you minimize, resize, give and remove focus to see more callbacks called.

The example is constituted of two main parts, first is the implementation of callbacks that will be called for each event(all our callbacks do is print their own name) and the second is the main function where we register the event callbacks and run the main loop:

#include <Ecore.h>
#include <Ecore_Evas.h>
static void
_destroy(Ecore_Evas *ee EINA_UNUSED)
{
printf("destroy\n");
ecore_main_loop_quit();
}
static void
_delete(Ecore_Evas *ee EINA_UNUSED)
{
printf("delete\n");
ecore_main_loop_quit();
}
static void
_focus_in(Ecore_Evas *ee EINA_UNUSED)
{
printf("focus_in\n");
}
static void
_focus_out(Ecore_Evas *ee EINA_UNUSED)
{
printf("focus_out\n");
}
static void
_hide(Ecore_Evas *ee EINA_UNUSED)
{
printf("hide\n");
}
static void
_mouse_in(Ecore_Evas *ee EINA_UNUSED)
{
printf("mouse_in\n");
}
static void
_show(Ecore_Evas *ee EINA_UNUSED)
{
printf("show\n");
}
static void
_mouse_out(Ecore_Evas *ee EINA_UNUSED)
{
printf("mouse_out\n");
}
static void
_move(Ecore_Evas *ee EINA_UNUSED)
{
printf("move\n");
}
static void
_post_render(Ecore_Evas *ee EINA_UNUSED)
{
printf("post_render\n");
}
static void
_pre_free(Ecore_Evas *ee EINA_UNUSED)
{
printf("pre_free\n");
}
static void
_pre_render(Ecore_Evas *ee EINA_UNUSED)
{
printf("pre_render\n");
}
static void
_resize(Ecore_Evas *ee EINA_UNUSED)
{
printf("resize\n");
}
int
main(void)
{
Ecore_Evas *ee;
Evas_Object *bg;
ecore_evas_init();
ee = ecore_evas_new(NULL, 0, 0, 200, 100, NULL);
ecore_evas_title_set(ee, "Ecore Evas Callbacks Example");
ecore_evas_show(ee);
bg = evas_object_rectangle_add(ecore_evas_get(ee));
evas_object_color_set(bg, 255, 128, 0, 255);
evas_object_resize(bg, 9999, 9999);
evas_object_show(bg);
//callbacks
ecore_evas_callback_delete_request_set(ee, _delete);
ecore_evas_callback_destroy_set(ee, _destroy);
ecore_evas_callback_focus_in_set(ee, _focus_in);
ecore_evas_callback_focus_out_set(ee, _focus_out);
ecore_evas_callback_hide_set(ee, _hide);
ecore_evas_callback_mouse_in_set(ee, _mouse_in);
ecore_evas_callback_mouse_out_set(ee, _mouse_out);
ecore_evas_callback_move_set(ee, _move);
ecore_evas_callback_post_render_set(ee, _post_render);
ecore_evas_callback_pre_free_set(ee, _pre_free);
ecore_evas_callback_pre_render_set(ee, _pre_render);
ecore_evas_callback_resize_set(ee, _resize);
ecore_evas_callback_show_set(ee, _show);
ecore_main_loop_begin();
ecore_evas_free(ee);
ecore_evas_shutdown();
return 0;
}
Ecore_Evas.h
Evas wrapper functions.
ecore_evas_init
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition ecore_evas.c:608
ecore_evas_callback_destroy_set
EAPI void ecore_evas_callback_destroy_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas destroy events.
Definition ecore_evas.c:1199
ecore_evas_title_set
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition ecore_evas.c:1541
ecore_evas_callback_delete_request_set
EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas delete request events.
Definition ecore_evas.c:1190
ecore_evas_show
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition ecore_evas.c:1494
ecore_evas_callback_move_set
EAPI void ecore_evas_callback_move_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas move events.
Definition ecore_evas.c:1163
ecore_evas_callback_pre_free_set
EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas pre-free event.
Definition ecore_evas.c:1300
ecore_evas_get
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition ecore_evas.c:1314
ecore_evas_callback_show_set
EAPI void ecore_evas_callback_show_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas show events.
Definition ecore_evas.c:1172
ecore_evas_callback_post_render_set
EAPI void ecore_evas_callback_post_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas mouse post-render events.
Definition ecore_evas.c:1291
ecore_evas_new
EAPI Ecore_Evas * ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options)
Creates a new Ecore_Evas based on engine name and common parameters.
Definition ecore_evas.c:1053
ecore_evas_callback_resize_set
EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas resize events.
Definition ecore_evas.c:1154
ecore_evas_shutdown
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition ecore_evas.c:672
ecore_evas_callback_pre_render_set
EAPI void ecore_evas_callback_pre_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas pre-render events.
Definition ecore_evas.c:1282
ecore_evas_callback_hide_set
EAPI void ecore_evas_callback_hide_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas hide events.
Definition ecore_evas.c:1181
ecore_evas_free
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition ecore_evas.c:1097
ecore_evas_callback_focus_in_set
EAPI void ecore_evas_callback_focus_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas focus in events.
Definition ecore_evas.c:1208
ecore_evas_callback_mouse_in_set
EAPI void ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas mouse in events.
Definition ecore_evas.c:1264
ecore_evas_callback_focus_out_set
EAPI void ecore_evas_callback_focus_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas focus out events.
Definition ecore_evas.c:1227
ecore_evas_callback_mouse_out_set
EAPI void ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas mouse out events.
Definition ecore_evas.c:1273
ecore_main_loop_quit
void ecore_main_loop_quit(void)
Quits the main loop once all the events currently on the queue have been processed.
Definition ecore_main.c:1321
ecore_main_loop_begin
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition ecore_main.c:1311
EINA_UNUSED
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339
evas_object_show
EVAS_API void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition evas_object_main.c:1814
evas_object_color_set
EVAS_API void evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
Sets the general/main color of the given Evas object to the given one.
Definition evas_object_main.c:2024
Evas_Object
Efl_Canvas_Object Evas_Object
An Evas Object handle.
Definition Evas_Common.h:185
evas_object_resize
EVAS_API void evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
Changes the size of the given Evas object.
Definition evas_object_main.c:1236
evas_object_rectangle_add
EVAS_API Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition evas_object_rectangle.c:78