jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4bb8a6bd21c094460bbf8ede6833047edd93dafa

commit 4bb8a6bd21c094460bbf8ede6833047edd93dafa
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Mon Jun 13 16:28:17 2016 +0900

    win: Add focus events (in, out, object in/out)
---
 src/lib/elementary/efl_ui_win.c  | 62 ++++++++++++++++++++++++++++++++++++++++
 src/lib/elementary/efl_ui_win.eo |  4 +++
 2 files changed, 66 insertions(+)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index dacc6e9..10b87a1 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -1757,6 +1757,52 @@ _elm_win_evas_render_pre(void *data,
 }
 
 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)
 {
    ecore_evas_free(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);
 
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index c3a337c..715d958 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -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;
    }

-- 


Reply via email to