bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4c74c1ebbebb4be433632dd1ce06a1e265259d5a
commit 4c74c1ebbebb4be433632dd1ce06a1e265259d5a Author: Marcel Hollerbach <[email protected]> Date: Fri Oct 27 12:02:31 2017 +0200 elm_mutlibuttonentry: fix legacy events This should fix the test cases --- src/lib/elementary/efl_ui_multibuttonentry.c | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c index 81e2b391ca..18129b0d5b 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.c +++ b/src/lib/elementary/efl_ui_multibuttonentry.c @@ -1715,6 +1715,43 @@ elm_multibuttonentry_add(Evas_Object *parent) return efl_add(MY_CLASS, parent, efl_canvas_object_legacy_ctor(efl_added)); } +static void +_legacy_focused(void *data, const Efl_Event *ev) +{ + Efl_Ui_Focus_Object *new_focus; + Eina_Bool meaningfull_focus_in = EINA_FALSE, meaningfull_focus_out = EINA_FALSE; + EFL_UI_MULTIBUTTONENTRY_DATA_GET(data, pd); + + new_focus = efl_ui_focus_manager_focus_get(ev->object); + + if (efl_isa(ev->info, ELM_WIDGET_CLASS) && elm_widget_parent_get(ev->info) == pd->box) + { + meaningfull_focus_out = EINA_TRUE; + } + + if (efl_isa(new_focus, ELM_WIDGET_CLASS) && elm_widget_parent_get(new_focus) == pd->box) + { + meaningfull_focus_in = EINA_TRUE; + } + + if (meaningfull_focus_in && !meaningfull_focus_out) + { + efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); + } + + if (!meaningfull_focus_in && meaningfull_focus_out) + { + efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); + } +} + +static void +_legacy_manager_changed_cb(void *data EINA_UNUSED, const Efl_Event *ev) +{ + efl_event_callback_del(ev->info, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _legacy_focused, ev->object); + efl_event_callback_add(efl_ui_focus_user_manager_get(ev->object), EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _legacy_focused, ev->object); +} + EOLIAN static Eo * _efl_ui_multibuttonentry_efl_object_constructor(Eo *obj, Efl_Ui_Multibuttonentry_Data *sd EINA_UNUSED) { @@ -1723,6 +1760,9 @@ _efl_ui_multibuttonentry_efl_object_constructor(Eo *obj, Efl_Ui_Multibuttonentry evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks); efl_access_role_set(obj, EFL_ACCESS_ROLE_PANEL); + //listen to manager changes here + efl_event_callback_add(obj, EFL_UI_FOCUS_USER_EVENT_MANAGER_CHANGED, _legacy_manager_changed_cb, NULL); + return obj; } --
