From 3f98d71830163a154762f2d16301d720c781b7c5 Mon Sep 17 00:00:00 2001 From: Amitesh Singh Date: Mon, 21 Jul 2014 19:04:27 +0900 Subject: [PATCH] focus: Added internal widget APIs of focus highlight object of elm window. Summary: This is required to support the animation of focus highlight object in case of item looping (genlist/gengrid/list). Reviewers: seoz, woohyun, raster Reviewed By: raster Subscribers: anand.km, seoz Differential Revision: https://phab.enlightenment.org/D1136 --- src/lib/elm_widget.c | 31 +++++++++++++++++++++++++++++++ src/lib/elm_widget.h | 7 +++++++ src/lib/elm_win.c | 27 +++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 1c5b71e..d6af6ff 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -161,6 +161,37 @@ _elm_widget_focus_highlight_start(const Evas_Object *obj) _elm_win_focus_highlight_start(top); } +void +_elm_widget_focus_highlight_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + Evas_Object *top = elm_widget_top_get(obj); + + if (top && eo_isa(top, ELM_WIN_CLASS)) + _elm_win_focus_highlight_signal_emit(top, emission, source); +} + +void +_elm_widget_focus_highlight_signal_callback_add(Evas_Object *obj, const char *emission, + const char *source, Edje_Signal_Cb _focus_highlight_signal_cb, + void *data) +{ + Evas_Object *top = elm_widget_top_get(obj); + + if (top && eo_isa(top, ELM_WIN_CLASS)) + _elm_win_focus_highlight_signal_callback_add(top, emission, source, _focus_highlight_signal_cb, data); +} + +void +_elm_widget_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, + const char *source, + Edje_Signal_Cb _focus_highlight_signal_cb) +{ + Evas_Object *top = elm_widget_top_get(obj); + + if (top && eo_isa(top, ELM_WIN_CLASS)) + _elm_win_focus_highlight_signal_callback_del(obj, emission, source, _focus_highlight_signal_cb); +} + EAPI Eina_Bool elm_widget_focus_highlight_enabled_get(const Evas_Object *obj) { diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 1fe5ab4..3f6db35 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -524,6 +524,13 @@ void _elm_widget_focus_highlight_start(const Evas_Object *obj); void _elm_widget_highlight_in_theme_update(Eo *obj); void _elm_win_focus_highlight_start(Evas_Object *obj); void _elm_win_focus_highlight_in_theme_update(Evas_Object *obj, Eina_Bool in_theme); +void _elm_widget_focus_highlight_signal_emit(Evas_Object *obj, const char *emission, const char *source); +void _elm_win_focus_highlight_signal_emit(Evas_Object *obj, const char *emission, const char *source); +void _elm_widget_focus_highlight_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb, void *data); +void _elm_win_focus_highlight_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb, void *data); +void _elm_widget_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb); +void _elm_widget_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb); +void _elm_win_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb _focus_highlight_signal_cb); EAPI void _elm_access_clear(Elm_Access_Info *ac); EAPI void _elm_access_text_set(Elm_Access_Info *ac, int type, const char *text); diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 59dfc0e..6964127 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -4832,6 +4832,33 @@ _elm_win_focus_highlight_in_theme_update(Evas_Object *obj, Eina_Bool in_theme) } void +_elm_win_focus_highlight_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + ELM_WIN_DATA_GET(obj, sd); + if (sd->focus_highlight.enabled) + edje_object_signal_emit(sd->focus_highlight.fobj, emission, source); +} + +void +_elm_win_focus_highlight_signal_callback_add(Evas_Object *obj, const char *emission, + const char *source, Edje_Signal_Cb _focus_highlight_signal_cb, + void *data) +{ + ELM_WIN_DATA_GET(obj, sd); + if (sd->focus_highlight.enabled && sd->focus_highlight.fobj) + edje_object_signal_callback_add(sd->focus_highlight.fobj, emission, source, _focus_highlight_signal_cb, data); +} + +void +_elm_win_focus_highlight_signal_callback_del(Evas_Object *obj, const char *emission, + const char *source, Edje_Signal_Cb _focus_highlight_signal_cb) +{ + ELM_WIN_DATA_GET(obj, sd); + if (sd->focus_highlight.enabled && sd->focus_highlight.fobj) + edje_object_signal_callback_del(sd->focus_highlight.fobj, emission, source, _focus_highlight_signal_cb); +} + +void _elm_win_focus_highlight_start(Evas_Object *obj) { ELM_WIN_DATA_GET(obj, sd); -- 2.7.4