EAPI void evas_object_focus_set(Evas_Object *obj, Eina_Bool focus) { MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); _evas_object_event_new(); if (focus) { if (obj->focused) goto end; if (obj->layer->evas->focused) evas_object_focus_set(obj->layer->evas->focused, 0); obj->focused = 1; obj->layer->evas->focused = obj; evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL); evas_event_callback_call(obj->layer->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj); } else { if (!obj->focused) goto end; obj->focused = 0; obj->layer->evas->focused = NULL; evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL); evas_event_callback_call(obj->layer->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj); } end: _evas_post_event_callback_call(obj->layer->evas); }
static void _always_call(Eo *eo_e, Evas_Callback_Type type, void *event_info) { int freeze_num = 0, i; freeze_num = efl_event_freeze_count_get(eo_e); for (i = 0; i < freeze_num; i++) efl_event_thaw(eo_e); evas_event_callback_call(eo_e, type, event_info); for (i = 0; i < freeze_num; i++) efl_event_freeze(eo_e); }