bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6b85f7dbdf206c71c7c5a13027a6abf5d61e8364

commit 6b85f7dbdf206c71c7c5a13027a6abf5d61e8364
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Mon Nov 20 22:22:02 2017 +0100

    elm_widget: move event emission to a callback
    
    the callback gets triggered if the new event got triggered.
---
 src/lib/elementary/elm_widget.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 5186fea304..8d36ee3535 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -5030,6 +5030,15 @@ elm_widget_tree_dot_dump(const Evas_Object *top,
 #endif
 }
 
+static void
+_focus_event_changed(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   if (efl_ui_focus_object_focus_get(event->object))
+     efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
+   else
+     efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL);
+}
+
 EOLIAN static Eo *
 _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd 
EINA_UNUSED)
 {
@@ -5048,6 +5057,8 @@ _elm_widget_efl_object_constructor(Eo *obj, 
Elm_Widget_Smart_Data *sd EINA_UNUSE
 
    efl_access_role_set(obj, EFL_ACCESS_ROLE_UNKNOWN);
 
+   efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_focus_event_changed, NULL);
+
    return obj;
 }
 
@@ -5108,17 +5119,14 @@ EOLIAN static Eina_Bool
 _elm_widget_on_focus_update(Eo *obj, Elm_Widget_Smart_Data *sd, 
Elm_Object_Item *item EINA_UNUSED)
 {
    Eina_Bool focused;
-   const Efl_Event_Description *desc;
 
    if (!elm_widget_can_focus_get(obj))
      return EINA_FALSE;
 
    focused = elm_widget_focus_get(obj);
-   desc = focused ? EFL_UI_WIDGET_EVENT_FOCUSED : 
EFL_UI_WIDGET_EVENT_UNFOCUSED;
 
    if (!sd->resize_obj)
      evas_object_focus_set(obj, focused);
-   efl_event_callback_legacy_call(obj, desc, NULL);
 
    if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj))
      efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
focused);

-- 


Reply via email to