win: Add focus events (in, out, object in/out)

This commit is contained in:
Jean-Philippe Andre 2016-06-13 16:28:17 +09:00
parent be82f4f0fd
commit 4bb8a6bd21
2 changed files with 66 additions and 0 deletions

View File

@ -1756,6 +1756,52 @@ _elm_win_evas_render_pre(void *data,
eo_event_callback_call(win, EFL_UI_WIN_EVENT_RENDER_PRE, NULL);
}
static void
_elm_win_evas_focus_in(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Eo *win = data;
eo_event_callback_call(win, EFL_UI_WIN_EVENT_FOCUS_IN, NULL);
}
static void
_elm_win_evas_focus_out(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Eo *win = data;
eo_event_callback_call(win, EFL_UI_WIN_EVENT_FOCUS_OUT, NULL);
}
static void
_elm_win_evas_object_focus_in(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Eo *object = event_info;
Eo *win = data;
eo_event_callback_call(win, EFL_UI_WIN_EVENT_OBJECT_FOCUS_IN, object);
}
static void
_elm_win_evas_object_focus_out(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Eo *object = event_info;
Eo *win = data;
eo_event_callback_call(win, EFL_UI_WIN_EVENT_OBJECT_FOCUS_OUT, object);
}
static void
_deferred_ecore_evas_free(void *data)
{
@ -2109,6 +2155,14 @@ _efl_ui_win_evas_object_smart_del(Eo *obj, Efl_Ui_Win_Data *sd)
_elm_win_evas_render_post, obj);
evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_RENDER_PRE,
_elm_win_evas_render_pre, obj);
evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_FOCUS_IN,
_elm_win_evas_focus_in, obj);
evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_FOCUS_OUT,
_elm_win_evas_focus_out, obj);
evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN,
_elm_win_evas_object_focus_in, obj);
evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT,
_elm_win_evas_object_focus_out, obj);
eo_event_callback_array_del(sd->evas, _elm_win_evas_forward_callbacks(), obj);
eo_event_callback_array_del(obj, _elm_win_evas_feed_fake_callbacks(), sd->evas);
@ -4175,6 +4229,14 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
_elm_win_evas_render_post, obj);
evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_RENDER_PRE,
_elm_win_evas_render_pre, obj);
evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_FOCUS_IN,
_elm_win_evas_focus_in, obj);
evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_FOCUS_OUT,
_elm_win_evas_focus_out, obj);
evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN,
_elm_win_evas_object_focus_in, obj);
evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT,
_elm_win_evas_object_focus_out, obj);
evas_object_show(sd->edje);

View File

@ -822,6 +822,10 @@ class Efl.Ui.Win (Elm.Widget, Elm.Interface.Atspi.Window,
wm,rotation,changed;
theme,changed;
elm,action,block_menu;
focus,in;
focus,out;
object,focus,in;
object,focus,out;
render,pre;
render,post: Efl.Gfx.Event.Render_Post;
}