From d9ea9824e7dca84f186d3e8d47a0194a035f79f4 Mon Sep 17 00:00:00 2001 From: raster Date: Wed, 24 Aug 2011 06:39:29 +0000 Subject: [PATCH] and now add custom access info for items too and clean up nicely. git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@62734 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/Elementary.h.in | 13 ++++++++++++- src/lib/elm_main.c | 7 +++++++ src/lib/elm_toolbar.c | 2 +- src/lib/elm_widget.c | 22 ++++++++++++++++++++++ src/lib/elm_widget.h | 3 +++ 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 3e32d6d..0df7528 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -1173,13 +1173,24 @@ extern "C" { /** * Set the text to read out when in accessibility mode * - * @param obj The object which is described + * @param obj The object which is to be described * @param txt The text that describes the widget to people with poor or no vision * * @ingroup General */ EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt); + /** + * Set the text to read out when in accessibility mode + * + * @param it The object item which is to be described + * @param txt The text that describes the widget to people with poor or no vision + * + * @ingroup General + */ + EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt); + + #define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL) /** diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c index 40d05a2..d33fe7c 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -2214,3 +2214,10 @@ elm_object_access_info_set(Evas_Object *obj, const char *txt) { elm_widget_access_info_set(obj, txt); } + +EAPI void +elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt) +{ + _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt); +} + diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c index d2c6bc8..408b835 100644 --- a/src/lib/elm_toolbar.c +++ b/src/lib/elm_toolbar.c @@ -715,7 +715,7 @@ static char * _access_info_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Widget_Item *item __UNUSED__) { Elm_Toolbar_Item *it = (Elm_Toolbar_Item *)item; - char *txt = NULL; // FIXME set access info on items - prefer that + char *txt = item->access_info; if (!txt) txt = (char *)it->label; if (txt) return strdup(txt); return txt; diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 74f4627..d56b469 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -2698,6 +2698,18 @@ _elm_widget_item_del(Elm_Widget_Item *item) if (item->view) evas_object_del(item->view); + + if (item->access) + { + _elm_access_clear(item->access); + free(item->access); + item->access = NULL; + } + if (item->access_info) + { + eina_stringshare_del(item->access_info); + item->access_info = NULL; + } if (item->access) { @@ -3254,6 +3266,16 @@ _elm_widget_item_signal_emit_hook_set(Elm_Widget_Item *item, item->on_signal_emit_func = func; } +EAPI void +_elm_widget_item_access_info_set(Elm_Widget_Item *item, const char *txt) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); + if (item->access_info) eina_stringshare_del(item->access_info); + if (!txt) item->access_info = NULL; + else item->access_info = eina_stringshare_add(txt); +} + + static void _smart_add(Evas_Object *obj) { diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index b813135..3e179e7 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -261,6 +261,7 @@ struct _Elm_Widget_Item Elm_Widget_On_Text_Get_Cb on_text_get_func; Elm_Widget_On_Signal_Emit_Cb on_signal_emit_func; Elm_Access_Info *access; + const char *access_info; /* widget variations should have data from here and on */ /* @todo: TODO check if this is enough for 1.0 release, maybe add padding! */ }; @@ -449,6 +450,8 @@ EAPI void _elm_widget_item_content_unset_hook_set(Elm_Widget_Item *i EAPI void _elm_widget_item_text_set_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Text_Set_Cb func); EAPI void _elm_widget_item_text_get_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Text_Get_Cb func); EAPI void _elm_widget_item_signal_emit_hook_set(Elm_Widget_Item *it, Elm_Widget_On_Signal_Emit_Cb func); +EAPI void _elm_widget_item_access_info_set(Elm_Widget_Item *item, const char *txt); + /* debug function. don't use it unless you are tracking parenting issues */ EAPI void elm_widget_tree_dump(const Evas_Object *top); -- 2.7.4