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); --