From 2f6e28881ec6f7f4c3157f7bb4202f37ded06aa7 Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Wed, 6 Sep 2017 19:54:59 +0900 Subject: [PATCH] elementary: atspi accessible name uses plain text The markup information of accessible name is not necessary. --- src/lib/elementary/elc_multibuttonentry.c | 8 ++--- src/lib/elementary/elm_entry.c | 4 +-- src/lib/elementary/elm_index.c | 2 +- src/lib/elementary/elm_list.c | 2 +- src/lib/elementary/elm_toolbar.c | 2 +- src/lib/elementary/elm_widget.c | 38 ++++++++++++++++++----- src/lib/elementary/elm_widget.h | 2 ++ 7 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c index f4b00a597d..7e2883c89e 100644 --- a/src/lib/elementary/elc_multibuttonentry.c +++ b/src/lib/elementary/elc_multibuttonentry.c @@ -2078,14 +2078,14 @@ _elm_multibuttonentry_elm_interface_atspi_accessible_children_get(Eo *obj, Elm_M } EOLIAN static const char* -_elm_multibuttonentry_item_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Multibuttonentry_Item_Data *item) +_elm_multibuttonentry_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Multibuttonentry_Item_Data *item) { const char *ret; - ret = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_MULTIBUTTONENTRY_ITEM_CLASS)); + ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_MULTIBUTTONENTRY_ITEM_CLASS)); if (ret) return ret; - const char *txt = elm_object_part_text_get(VIEW(item), "elm.btn.text"); - return txt; + ret = elm_object_part_text_get(VIEW(item), "elm.btn.text"); + return _elm_widget_item_accessible_plain_name_get(eo_it, ret); } EOLIAN static Elm_Atspi_State_Set diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index b317e77124..25aa2ba7b5 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -6041,11 +6041,11 @@ _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd) if (sd->password) return NULL; - name = _elm_util_mkup_to_text(elm_entry_entry_get(obj)); + name = _elm_widget_accessible_plain_name_get(obj, elm_entry_entry_get(obj)); if (name && strncmp("", name, 1)) return name; const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide"); - return _elm_util_mkup_to_text(ret); + return _elm_widget_accessible_plain_name_get(obj, ret); } /* Efl.Part begin */ diff --git a/src/lib/elementary/elm_index.c b/src/lib/elementary/elm_index.c index 85e2b99b42..d21f3b5e5f 100644 --- a/src/lib/elementary/elm_index.c +++ b/src/lib/elementary/elm_index.c @@ -1739,7 +1739,7 @@ _elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Index_Ite name = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_INDEX_ITEM_CLASS)); if (name) return name; - return data->letter; + return _elm_widget_item_accessible_plain_name_get(eo_it, data->letter); } EOLIAN static const Elm_Atspi_Action* diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c index 8181dd9396..1a52decb02 100644 --- a/src/lib/elementary/elm_list.c +++ b/src/lib/elementary/elm_list.c @@ -2129,7 +2129,7 @@ _elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_List_Item_ const char *ret; ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_LIST_ITEM_CLASS)); if (ret) return ret; - return data->label; + return _elm_widget_item_accessible_plain_name_get(eo_it, data->label); } static char * diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index b947e86116..cf9bc7210c 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -3997,7 +3997,7 @@ _elm_toolbar_item_elm_interface_atspi_accessible_name_get(Eo *eo_item, Elm_Toolb const char *ret; ret = elm_interface_atspi_accessible_name_get(efl_super(eo_item, ELM_TOOLBAR_ITEM_CLASS)); if (ret) return ret; - return item->label; + return _elm_widget_item_accessible_plain_name_get(eo_item, item->label); } EOLIAN static Elm_Atspi_State_Set diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 523a34eb2e..f1f0fb217b 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -5095,6 +5095,35 @@ _elm_widget_item_onscreen_is(Elm_Object_Item *item) return EINA_TRUE; } +const char* +_elm_widget_accessible_plain_name_get(Evas_Object *obj, const char* name) +{ + char *accessible_plain_name; + + API_ENTRY return NULL; + + accessible_plain_name = _elm_util_mkup_to_text(name); + eina_stringshare_del(sd->accessible_name); + sd->accessible_name = eina_stringshare_add(accessible_plain_name); + free(accessible_plain_name); + return sd->accessible_name; +} + +const char* +_elm_widget_item_accessible_plain_name_get(Elm_Object_Item *item, const char* name) +{ + char *accessible_plain_name; + + Elm_Widget_Item_Data *id = efl_data_scope_get(item, ELM_WIDGET_ITEM_CLASS); + if (!id) return NULL; + + accessible_plain_name = _elm_util_mkup_to_text(name); + eina_stringshare_del(id->accessible_name); + id->accessible_name = eina_stringshare_add(accessible_plain_name); + free(accessible_plain_name); + return id->accessible_name; +} + EOLIAN static Elm_Atspi_State_Set _elm_widget_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_item, Elm_Widget_Item_Data *item EINA_UNUSED) @@ -6298,10 +6327,9 @@ _elm_widget_elm_interface_atspi_component_focus_grab(Eo *obj, Elm_Widget_Smart_D } EOLIAN static const char* -_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd) +_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED) { const char *ret, *name; - char *accessible_name; name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_WIDGET_CLASS)); if (name) return name; @@ -6309,11 +6337,7 @@ _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Wid ret = elm_object_text_get(obj); if (!ret) return NULL; - accessible_name = _elm_util_mkup_to_text(ret); - eina_stringshare_del(_pd->accessible_name); - _pd->accessible_name = eina_stringshare_add(accessible_name); - free(accessible_name); - return _pd->accessible_name; + return _elm_widget_accessible_plain_name_get(obj, ret); } EOLIAN static Eina_List* diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h index 8f3eae2ee0..0e51f610f2 100644 --- a/src/lib/elementary/elm_widget.h +++ b/src/lib/elementary/elm_widget.h @@ -751,6 +751,8 @@ EAPI void elm_widget_tree_dump(const Evas_Object *top); EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *output); EAPI Eina_Bool _elm_widget_onscreen_is(Evas_Object *widget); EAPI Eina_Bool _elm_widget_item_onscreen_is(Elm_Object_Item *item); +const char* _elm_widget_accessible_plain_name_get(Evas_Object *obj, const char* name); +const char* _elm_widget_item_accessible_plain_name_get(Elm_Object_Item *item, const char* name); #define ELM_WIDGET_DATA_GET_OR_RETURN(o, ptr, ...) \ Elm_Widget_Smart_Data *ptr; \