[elementary][atspi] change accessible description to char* from const char*

Summary:
The accessible name is char*, this could confuse API user.
If we provide user callback to get description, an user would return allocated string.
The usage of elm_interface_atspi_description_get/set should be same with elm_interface_atspi_name_get/set

Reviewers: lukasz.stanislawski, cedric, raster

Reviewed By: raster

Subscribers: stanluk, jpeg

Differential Revision: https://phab.enlightenment.org/D4378
This commit is contained in:
Shinwoo Kim 2016-11-10 10:58:41 +09:00 committed by Carsten Haitzler (Rasterman)
parent 7917fa4ebf
commit e648f1e85e
18 changed files with 74 additions and 74 deletions

View File

@ -4808,14 +4808,14 @@ _efl_ui_text_elm_interface_atspi_accessible_state_set_get(Eo *obj, Efl_Ui_Text_D
return ret; return ret;
} }
EOLIAN static char* EOLIAN static const char*
_efl_ui_text_elm_interface_atspi_accessible_name_get(Eo *obj, Efl_Ui_Text_Data *pd) _efl_ui_text_elm_interface_atspi_accessible_name_get(Eo *obj, Efl_Ui_Text_Data *pd)
{ {
char *name; const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_TEXT_CLASS)); name = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_TEXT_CLASS));
if (name && strncmp("", name, 1)) return name; if (name && strncmp("", name, 1)) return name;
const char *ret = edje_object_part_text_get(pd->entry_edje, "elm.guide"); const char *ret = edje_object_part_text_get(pd->entry_edje, "elm.guide");
return ret ? strdup(ret) : NULL; return ret;
} }
EOLIAN static Efl_Canvas_Text_Cursor * EOLIAN static Efl_Canvas_Text_Cursor *

View File

@ -6205,14 +6205,14 @@ _efl_ui_win_elm_interface_atspi_accessible_state_set_get(Eo *obj, Efl_Ui_Win_Dat
return ret; return ret;
} }
EOLIAN static char* EOLIAN static const char*
_efl_ui_win_elm_interface_atspi_accessible_name_get(Eo *obj, Efl_Ui_Win_Data *sd EINA_UNUSED) _efl_ui_win_elm_interface_atspi_accessible_name_get(Eo *obj, Efl_Ui_Win_Data *sd EINA_UNUSED)
{ {
char *ret; const char *ret;
ret = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_WIN_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_WIN_CLASS));
if (ret) return ret; if (ret) return ret;
const char *name = elm_win_title_get(obj); const char *name = elm_win_title_get(obj);
return name ? strdup(name) : NULL; return name;
} }
EOLIAN static Eina_Bool EOLIAN static Eina_Bool

View File

@ -2047,15 +2047,15 @@ _elm_multibuttonentry_elm_interface_atspi_accessible_children_get(Eo *obj, Elm_M
return eina_list_merge(eina_list_clone(sd->items), ret); return eina_list_merge(eina_list_clone(sd->items), ret);
} }
EOLIAN static char* 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 *obj, Elm_Multibuttonentry_Item_Data *item)
{ {
char *ret; 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(obj, ELM_MULTIBUTTONENTRY_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
const char *txt = elm_object_part_text_get(VIEW(item), "elm.btn.text"); const char *txt = elm_object_part_text_get(VIEW(item), "elm.btn.text");
return txt ? strdup(txt) : NULL; return txt;
} }
static Eina_Bool static Eina_Bool

View File

@ -44,12 +44,12 @@ _elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_U
return accs; return accs;
} }
EOLIAN static char* EOLIAN static const char*
_elm_atspi_app_object_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED) _elm_atspi_app_object_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Atspi_App_Object_Data *_pd EINA_UNUSED)
{ {
const char *ret; const char *ret;
ret = elm_app_name_get(); ret = elm_app_name_get();
return ret ? strdup(ret) : NULL; return ret;
} }
EOLIAN static const char* EOLIAN static const char*

View File

@ -2075,12 +2075,10 @@ _accessible_property_get(const Eldbus_Service_Interface *interface, const char *
if (!strcmp(property, "Name")) if (!strcmp(property, "Name"))
{ {
char *ret2; ret = elm_interface_atspi_accessible_name_get(obj);
ret2 = elm_interface_atspi_accessible_name_get(obj); if (!ret)
if (!ret2) ret = "";
ret2 = strdup(""); eldbus_message_iter_basic_append(iter, 's', ret);
eldbus_message_iter_basic_append(iter, 's', ret2);
free(ret2);
return EINA_TRUE; return EINA_TRUE;
} }
else if (!strcmp(property, "Description")) else if (!strcmp(property, "Description"))
@ -3191,13 +3189,12 @@ _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_
_iter_interfaces_append(iter_struct, data); _iter_interfaces_append(iter_struct, data);
/* Marshall name */ /* Marshall name */
char *name = NULL; const char *name = NULL;
name = elm_interface_atspi_accessible_name_get(data); name = elm_interface_atspi_accessible_name_get(data);
if (!name) if (!name)
name = strdup(""); name = "";
eldbus_message_iter_basic_append(iter_struct, 's', name); eldbus_message_iter_basic_append(iter_struct, 's', name);
free(name);
/* Marshall role */ /* Marshall role */
eldbus_message_iter_basic_append(iter_struct, 'u', role); eldbus_message_iter_basic_append(iter_struct, 'u', role);

View File

@ -5983,14 +5983,14 @@ _elm_entry_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Entry_Data
return ret; return ret;
} }
EOLIAN static char* EOLIAN static const char*
_elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd) _elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Entry_Data *sd)
{ {
char *name; const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_ENTRY_CLASS)); name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_ENTRY_CLASS));
if (name && strncmp("", name, 1)) return name; if (name && strncmp("", name, 1)) return name;
const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide"); const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
return ret ? strdup(ret) : NULL; return ret;
} }
/* Efl.Part begin */ /* Efl.Part begin */

View File

@ -5773,11 +5773,12 @@ _elm_gengrid_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
return ret; return ret;
} }
EOLIAN char* EOLIAN const char*
_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it) _elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it)
{ {
char *ret; const char *ret;
Eina_Strbuf *buf; Eina_Strbuf *buf;
char *accessible_name;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENGRID_ITEM_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENGRID_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
@ -5811,9 +5812,13 @@ _elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Ite
} }
} }
ret = eina_strbuf_string_steal(buf); accessible_name = eina_strbuf_string_steal(buf);
eina_strbuf_free(buf); eina_strbuf_free(buf);
return ret;
eina_stringshare_del(it->base->accessible_name);
it->base->accessible_name = eina_stringshare_add(accessible_name);
free(accessible_name);
return it->base->accessible_name;
} }
EAPI Elm_Object_Item * EAPI Elm_Object_Item *

View File

@ -8221,11 +8221,12 @@ _elm_genlist_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
return ret; return ret;
} }
EOLIAN char* EOLIAN const char*
_elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it) _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it)
{ {
char *ret; const char *ret;
Eina_Strbuf *buf; Eina_Strbuf *buf;
char *accessible_name;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENLIST_ITEM_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENLIST_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
@ -8257,9 +8258,13 @@ _elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Ite
} }
} }
ret = eina_strbuf_string_steal(buf); accessible_name = eina_strbuf_string_steal(buf);
eina_strbuf_free(buf); eina_strbuf_free(buf);
return ret;
eina_stringshare_del(it->base->accessible_name);
it->base->accessible_name = eina_stringshare_add(accessible_name);
free(accessible_name);
return it->base->accessible_name;
} }
EOLIAN static void EOLIAN static void

View File

@ -1741,14 +1741,14 @@ _elm_index_elm_interface_atspi_accessible_children_get(Eo *obj, Elm_Index_Data *
return eina_list_merge(eina_list_clone(data->items), ret); return eina_list_merge(eina_list_clone(data->items), ret);
} }
EOLIAN static char* EOLIAN static const char*
_elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Index_Item_Data *data) _elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Index_Item_Data *data)
{ {
char *name; const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_INDEX_ITEM_CLASS)); name = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_INDEX_ITEM_CLASS));
if (name) return name; if (name) return name;
return data->letter ? strdup(data->letter) : NULL; return data->letter;
} }
EOLIAN static const Elm_Atspi_Action* EOLIAN static const Elm_Atspi_Action*

View File

@ -224,26 +224,18 @@ _elm_interface_atspi_accessible_role_name_get(Eo *obj EINA_UNUSED, Elm_Interface
return role > ELM_ATSPI_ROLE_LAST_DEFINED ? "" : Atspi_Name[role]; return role > ELM_ATSPI_ROLE_LAST_DEFINED ? "" : Atspi_Name[role];
} }
EOLIAN char * EOLIAN const char *
_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd) _elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
{ {
if (pd->name)
{
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
if (pd->translation_domain) if (pd->translation_domain)
return strdup(dgettext(pd->translation_domain, pd->name)); return dgettext(pd->translation_domain, pd->name);
else
return strdup(pd->name);
#else
return strdup(pd->name);
#endif #endif
} return pd->name;
return NULL;
} }
EOLIAN static void EOLIAN static void
_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, char *val) _elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, const char *val)
{ {
eina_stringshare_replace(&pd->name, val); eina_stringshare_replace(&pd->name, val);
} }

View File

@ -256,7 +256,7 @@ mixin Elm.Interface.Atspi_Accessible ()
set { set {
} }
values { values {
name: ptr(char); [[Object name]] name: string; [[Object name]]
} }
} }
@property relation_set @protected { @property relation_set @protected {

View File

@ -2144,13 +2144,13 @@ _elm_list_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_List_
return ret; return ret;
} }
EOLIAN static char* EOLIAN static const char*
_elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_List_Item_Data *data) _elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_List_Item_Data *data)
{ {
char *ret; const char *ret;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_LIST_ITEM_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_LIST_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
return data->label ? strdup(data->label) : NULL; return data->label;
} }
static char * static char *

View File

@ -1304,13 +1304,13 @@ _elm_menu_item_elm_interface_atspi_accessible_role_get(Eo *obj EINA_UNUSED, Elm_
return sd->submenu.items ? ELM_ATSPI_ROLE_MENU : ELM_ATSPI_ROLE_MENU_ITEM; return sd->submenu.items ? ELM_ATSPI_ROLE_MENU : ELM_ATSPI_ROLE_MENU_ITEM;
} }
EOLIAN static char* EOLIAN static const char*
_elm_menu_item_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Menu_Item_Data *sd) _elm_menu_item_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Menu_Item_Data *sd)
{ {
char *ret; const char *ret;
ret = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_MENU_ITEM_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_MENU_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
return sd->label ? strdup(sd->label) : NULL; return sd->label;
} }
EOLIAN static Elm_Atspi_State_Set EOLIAN static Elm_Atspi_State_Set

View File

@ -1736,14 +1736,14 @@ _elm_spinner_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Sp
return sd->step; return sd->step;
} }
EOLIAN static char* EOLIAN static const char*
_elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *sd EINA_UNUSED) _elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *sd EINA_UNUSED)
{ {
char *name; const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_SPINNER_CLASS)); name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_SPINNER_CLASS));
if (name) return name; if (name) return name;
const char *ret = elm_layout_text_get(obj, "elm.text"); const char *ret = elm_layout_text_get(obj, "elm.text");
return ret ? strdup(ret) : NULL; return ret;
} }
// A11Y Accessibility - END // A11Y Accessibility - END

View File

@ -3966,13 +3966,13 @@ _elm_toolbar_item_bring_in(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item,
(WIDGET(item), x, y, w, h); (WIDGET(item), x, y, w, h);
} }
EOLIAN static char* EOLIAN static const char*
_elm_toolbar_item_elm_interface_atspi_accessible_name_get(Eo *eo_item, Elm_Toolbar_Item_Data *item) _elm_toolbar_item_elm_interface_atspi_accessible_name_get(Eo *eo_item, Elm_Toolbar_Item_Data *item)
{ {
char *ret; const char *ret;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_item, ELM_TOOLBAR_ITEM_CLASS)); ret = elm_interface_atspi_accessible_name_get(efl_super(eo_item, ELM_TOOLBAR_ITEM_CLASS));
if (ret) return ret; if (ret) return ret;
return item->label ? strdup(item->label) : NULL; return item->label;
} }
EOLIAN static Elm_Atspi_State_Set EOLIAN static Elm_Atspi_State_Set

View File

@ -482,6 +482,7 @@ _elm_widget_efl_canvas_group_group_del(Eo *obj, Elm_Widget_Smart_Data *sd)
_if_focused_revert(obj, EINA_TRUE); _if_focused_revert(obj, EINA_TRUE);
elm_widget_focus_custom_chain_unset(obj); elm_widget_focus_custom_chain_unset(obj);
eina_stringshare_del(sd->access_info); eina_stringshare_del(sd->access_info);
eina_stringshare_del(sd->accessible_name);
evas_object_smart_data_set(obj, NULL); evas_object_smart_data_set(obj, NULL);
} }
@ -4576,6 +4577,7 @@ _elm_widget_item_efl_object_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
evas_object_del(item->view); evas_object_del(item->view);
eina_stringshare_del(item->access_info); eina_stringshare_del(item->access_info);
eina_stringshare_del(item->accessible_name);
while (item->signals) while (item->signals)
_elm_widget_item_signal_callback_list_get(item, item->signals); _elm_widget_item_signal_callback_list_get(item, item->signals);
@ -5939,11 +5941,11 @@ _elm_widget_elm_interface_atspi_component_focus_grab(Eo *obj, Elm_Widget_Smart_D
return EINA_FALSE; return EINA_FALSE;
} }
EOLIAN static char* EOLIAN static const char*
_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED) _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd)
{ {
const char *ret; const char *ret, *name;
char *name; char *accessible_name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_WIDGET_CLASS)); name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_WIDGET_CLASS));
if (name) return name; if (name) return name;
@ -5951,7 +5953,11 @@ _elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Wid
ret = elm_object_text_get(obj); ret = elm_object_text_get(obj);
if (!ret) return NULL; if (!ret) return NULL;
return _elm_util_mkup_to_text(ret); 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;
} }
EOLIAN static Eina_List* EOLIAN static Eina_List*

View File

@ -410,6 +410,7 @@ typedef struct _Elm_Widget_Smart_Data
const char *style; const char *style;
const char *focus_highlight_style; /**< custom focus style for a widget */ const char *focus_highlight_style; /**< custom focus style for a widget */
const char *access_info; const char *access_info;
const char *accessible_name;
unsigned int focus_order; unsigned int focus_order;
Eina_Bool focus_order_on_calc; Eina_Bool focus_order_on_calc;
@ -603,6 +604,7 @@ struct _Elm_Widget_Item_Data
Evas_Object *access_obj; Evas_Object *access_obj;
const char *access_info; const char *access_info;
const char *accessible_name;
Eina_List *access_order; Eina_List *access_order;
Eina_Inlist *translate_strings; Eina_Inlist *translate_strings;
Eina_List *signals; Eina_List *signals;

View File

@ -51,7 +51,7 @@ START_TEST (elm_atspi_name_get)
elm_init(0, NULL); elm_init(0, NULL);
generate_app(); generate_app();
char *name; const char *name;
name = elm_interface_atspi_accessible_name_get(g_btn); name = elm_interface_atspi_accessible_name_get(g_btn);
@ -59,8 +59,6 @@ START_TEST (elm_atspi_name_get)
ck_assert(0); ck_assert(0);
} }
free(name);
// Set name with additional text tags // Set name with additional text tags
elm_object_text_set(g_btn, "Some<br>text"); elm_object_text_set(g_btn, "Some<br>text");
@ -70,7 +68,6 @@ START_TEST (elm_atspi_name_get)
ck_assert(name != NULL); ck_assert(name != NULL);
ck_assert_str_eq(name, "Some\ntext"); ck_assert_str_eq(name, "Some\ntext");
free(name);
elm_shutdown(); elm_shutdown();
} }
END_TEST END_TEST
@ -80,7 +77,7 @@ START_TEST (elm_atspi_name_set)
elm_init(0, NULL); elm_init(0, NULL);
generate_app(); generate_app();
char *name; const char *name;
elm_object_text_set(g_btn, "Other text"); elm_object_text_set(g_btn, "Other text");
elm_interface_atspi_accessible_name_set(g_btn, "Test name"); elm_interface_atspi_accessible_name_set(g_btn, "Test name");
@ -90,16 +87,12 @@ START_TEST (elm_atspi_name_set)
ck_assert(name != NULL); ck_assert(name != NULL);
ck_assert_str_eq(name, "Test name"); ck_assert_str_eq(name, "Test name");
free(name);
elm_interface_atspi_accessible_name_set(g_btn, NULL); elm_interface_atspi_accessible_name_set(g_btn, NULL);
name = elm_interface_atspi_accessible_name_get(g_btn); name = elm_interface_atspi_accessible_name_get(g_btn);
ck_assert(name != NULL); ck_assert(name != NULL);
ck_assert_str_eq(name, "Other text"); ck_assert_str_eq(name, "Other text");
free(name);
elm_shutdown(); elm_shutdown();
} }
END_TEST END_TEST