bdilly pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fd6f6c14c16afdde7fe579b48313f5cca100dfea
commit fd6f6c14c16afdde7fe579b48313f5cca100dfea Author: Guilherme Iscaro <[email protected]> Date: Thu Nov 17 18:22:50 2016 -0200 Evas: Use events to set canvas focus in/out. --- src/lib/efl/interfaces/efl_canvas.eo | 4 ++-- src/lib/evas/canvas/evas_callbacks.c | 11 ++++++++++- src/lib/evas/canvas/evas_events.c | 6 ++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/efl/interfaces/efl_canvas.eo b/src/lib/efl/interfaces/efl_canvas.eo index bd05337..0393465 100644 --- a/src/lib/efl/interfaces/efl_canvas.eo +++ b/src/lib/efl/interfaces/efl_canvas.eo @@ -160,8 +160,8 @@ interface Efl.Canvas () } } events { - focus,in; [[Called when canvas got focus]] - focus,out; [[Called when canvas lost focus]] + focus,in: Efl.Input.Focus; [[Called when canvas got focus]] + focus,out: Efl.Input.Focus; [[Called when canvas lost focus]] object,focus,in: Efl.Canvas.Object; [[Called when object got focus]] object,focus,out: Efl.Canvas.Object; [[Called when object lost focus]] render,pre; [[Called when pre render happens]] diff --git a/src/lib/evas/canvas/evas_callbacks.c b/src/lib/evas/canvas/evas_callbacks.c index d529399..394eef7 100644 --- a/src/lib/evas/canvas/evas_callbacks.c +++ b/src/lib/evas/canvas/evas_callbacks.c @@ -197,8 +197,17 @@ _eo_evas_object_cb(void *data, const Efl_Event *event) static void _eo_evas_cb(void *data, const Efl_Event *event) { + void *event_info; _eo_evas_cb_info *info = data; - if (info->func) info->func(info->data, event->object, event->info); + + //Keep the legacy behaviour for focus events. + if (event->desc == EFL_CANVAS_EVENT_FOCUS_IN || + event->desc == EFL_CANVAS_EVENT_FOCUS_OUT) + event_info = NULL; + else + event_info = event->info; + + if (info->func) info->func(info->data, event->object, event_info); } void diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index 10782b6..5bccd61 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -3537,13 +3537,15 @@ _evas_canvas_event_focus_cb(void *data, const Efl_Event *event) { if (e->focus) return; e->focus = 1; - evas_event_callback_call(e->evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, NULL); + evas_event_callback_call(e->evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, + event->info); } else { if (!e->focus) return; e->focus = 0; - evas_event_callback_call(e->evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, NULL); + evas_event_callback_call(e->evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, + event->info); } } --
