From bfef6bffe684d06954e18a041e916fe548acf05f Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 3 Sep 2012 08:49:45 +0000 Subject: [PATCH] use shinwoo's 2nd patch not first! SVN revision: 75979 --- ChangeLog | 5 ----- src/lib/elm_access.c | 17 +---------------- src/lib/elm_button.c | 17 ++++++++--------- src/lib/elm_widget.c | 10 ++++++++++ src/lib/elm_widget.h | 8 +++----- 5 files changed, 22 insertions(+), 35 deletions(-) diff --git a/ChangeLog b/ChangeLog index e9734f8..ad0e8fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -442,8 +442,3 @@ * Fix re-order animation when it doesn't end correctly. * Improve elm map module loading to onlt init the module needed when searching and not all modules. - -2012-09-03 Shinwoo Kim (kimcinoo) - - * Add in more access subsystem features like activation cb. - diff --git a/src/lib/elm_access.c b/src/lib/elm_access.c index 2cb95ce..4de3517 100644 --- a/src/lib/elm_access.c +++ b/src/lib/elm_access.c @@ -291,26 +291,11 @@ _elm_access_on_highlight_hook_set(Elm_Access_Info *ac, } EAPI void -_elm_access_activate_hook_set(Elm_Access_Info *ac, - Elm_Access_Activate_Cb func, - void *data) -{ - if (!ac) return; - ac->activate = func; - ac->activate_data = data; -} - -EAPI void _elm_access_highlight_object_activate(Evas_Object *obj) { Evas_Object *highlight_obj; highlight_obj = elm_widget_focused_object_get(obj); - - Elm_Access_Info *ac = evas_object_data_get(highlight_obj, "_elm_access"); - if (!ac) return; - - if (ac->activate) - ac->activate(highlight_obj, ac->activate_data); + elm_widget_activate(highlight_obj); } EAPI char * diff --git a/src/lib/elm_button.c b/src/lib/elm_button.c index 12a88cd..ed9183b 100644 --- a/src/lib/elm_button.c +++ b/src/lib/elm_button.c @@ -73,6 +73,13 @@ _elm_button_smart_sizing_eval(Evas_Object *obj) evas_object_size_hint_min_set(obj, minw, minh); } +static void +_elm_button_smart_activate(Evas_Object *obj) +{ + evas_object_smart_callback_call(obj, SIG_CLICKED, NULL); + elm_layout_signal_emit(obj, "elm,anim,activate", "elm"); +} + /* FIXME: replicated from elm_layout just because button's icon spot * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we * can changed the theme API */ @@ -258,13 +265,6 @@ _access_state_cb(void *data __UNUSED__, } static void -_access_activate_cb(Evas_Object *obj, void *data __UNUSED__) -{ - evas_object_smart_callback_call(obj, SIG_CLICKED, NULL); - elm_layout_signal_emit(obj, "elm,anim,activate", "elm"); -} - -static void _elm_button_smart_add(Evas_Object *obj) { EVAS_SMART_DATA_ALLOC(obj, Elm_Button_Smart_Data); @@ -288,8 +288,6 @@ _elm_button_smart_add(Evas_Object *obj) (_elm_access_object_get(obj), ELM_ACCESS_INFO, _access_info_cb, NULL); _elm_access_callback_set (_elm_access_object_get(obj), ELM_ACCESS_STATE, _access_state_cb, priv); - _elm_access_activate_hook_set - (_elm_access_object_get(obj), _access_activate_cb, NULL); elm_widget_can_focus_set(obj, EINA_TRUE); @@ -312,6 +310,7 @@ _elm_button_smart_set_user(Elm_Button_Smart_Class *sc) ELM_CONTAINER_CLASS(sc)->content_set = _elm_button_smart_content_set; ELM_LAYOUT_CLASS(sc)->sizing_eval = _elm_button_smart_sizing_eval; + ELM_WIDGET_CLASS(sc)->activate = _elm_button_smart_activate; ELM_LAYOUT_CLASS(sc)->content_aliases = _content_aliases; ELM_LAYOUT_CLASS(sc)->text_aliases = _text_aliases; diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 3dd8de4..b27b461 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -3506,6 +3506,16 @@ elm_widget_focus_order_get(const Evas_Object *obj) return sd->focus_order; } +EAPI void +elm_widget_activate(Evas_Object *obj) +{ + API_ENTRY return; + + if (!sd->api->activate) return; + + sd->api->activate(obj); +} + /** * @internal * diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 86fe1fe..f49c419 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -351,7 +351,7 @@ */ #define ELM_WIDGET_SMART_CLASS_INIT(smart_class_init) \ {smart_class_init, ELM_WIDGET_SMART_CLASS_VERSION, NULL, NULL, NULL, NULL, \ - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} /** * @def ELM_WIDGET_SMART_CLASS_INIT_NULL @@ -432,6 +432,7 @@ typedef struct _Elm_Widget_Smart_Class Evas_Object *sobj); /**< 'Virtual' function handling sub objects being removed */ void (*access)(Evas_Object *obj, Eina_Bool is_access); /**< 'Virtual' function on the widget being set access */ + void (*activate)(Evas_Object *obj); /**< 'Virtual' function to activate widget */ } Elm_Widget_Smart_Class; /** @@ -546,7 +547,6 @@ typedef Eina_Bool (*Elm_Widget_Del_Pre_Cb)(void *data); typedef char *(*Elm_Access_Content_Cb)(void *data, Evas_Object *obj, Elm_Widget_Item *item); typedef void (*Elm_Access_On_Highlight_Cb)(void *data); -typedef void (*Elm_Access_Activate_Cb)(Evas_Object *obj, void *data); struct _Elm_Access_Item { @@ -562,8 +562,6 @@ struct _Elm_Access_Info Ecore_Timer *delay_timer; void *on_highlight_data; Elm_Access_On_Highlight_Cb on_highlight; - void *activate_data; - Elm_Access_Activate_Cb activate; }; EAPI void _elm_access_clear(Elm_Access_Info *ac); @@ -586,7 +584,6 @@ EAPI Evas_Object * _elm_access_edje_object_part_object_register(Evas_Object * EAPI void _elm_access_widget_item_register(Elm_Widget_Item *item); EAPI void _elm_access_widget_item_unregister(Elm_Widget_Item *item); EAPI void _elm_access_on_highlight_hook_set(Elm_Access_Info *ac, Elm_Access_On_Highlight_Cb func, void *data); -EAPI void _elm_access_activate_hook_set(Elm_Access_Info *ac, Elm_Access_Activate_Cb func, void *data); EAPI void _elm_access_highlight_object_activate(Evas_Object *obj); /**< put this as the first member in your widget item struct */ @@ -742,6 +739,7 @@ EAPI void elm_widget_focus_mouse_up_handle(Evas_Object *obj); EAPI void elm_widget_focus_tree_unfocusable_handle(Evas_Object *obj); EAPI void elm_widget_focus_disabled_handle(Evas_Object *obj); EAPI unsigned int elm_widget_focus_order_get(const Evas_Object *obj); +EAPI void elm_widget_activate(Evas_Object *obj); EAPI void elm_widget_text_part_set(Evas_Object *obj, const char *part, const char *label); EAPI const char *elm_widget_text_part_get(const Evas_Object *obj, const char *part); EAPI void elm_widget_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text); -- 2.7.4