//
//TIZEN ONLY(20150710)ctxpopup: Accessible methods for children_get, extents_get and item name_get
-EOLIAN char *
+EOLIAN const char *
_elm_ctxpopup_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Ctxpopup_Item_Data *item)
{
- return strdup(elm_object_item_text_get(item->list_item));
+ return elm_object_item_text_get(item->list_item);
}
//
return &atspi_actions[0];
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_multibuttonentry_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Multibuttonentry_Item_Data *it)
{
- char *ret;
+ const char *ret;
eo_do_super(eo_it, ELM_MULTIBUTTONENTRY_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
- ret = (char *)elm_object_part_text_get(VIEW(it), "elm.btn.text");
- return ret ? strdup(ret) : NULL;
+ ret = elm_object_part_text_get(VIEW(it), "elm.btn.text");
+ return ret;
}
EOLIAN static Elm_Atspi_State_Set
}
//TIZEN ONLY(20160818): name interface added
-EOLIAN static char*
-_elm_popup_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Popup_Data *sd)
+EOLIAN static const char*
+_elm_popup_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Popup_Data *sd)
{
Eina_Strbuf *buf;
- char *ret = NULL;
+ char *accessible_name = NULL;
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
buf = eina_strbuf_new();
eina_strbuf_append_printf(buf, "%s", N_("Alert"));
if (sd->title_text)
eina_strbuf_append_printf(buf, ", %s", sd->title_text);
else if (sd->text_content_obj)
eina_strbuf_append_printf(buf, ", %s", elm_object_text_get(sd->text_content_obj));
- ret = eina_strbuf_string_steal(buf);
+ accessible_name = eina_strbuf_string_steal(buf);
eina_strbuf_free(buf);
- return strdup(ret);
+
+ eina_stringshare_del(wd->accessible_name);
+ wd->accessible_name = eina_stringshare_add(accessible_name);
+ free(accessible_name);
+ return wd->accessible_name;
}
//
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_access_elm_interface_atspi_accessible_name_get(Eo *obj, void *pd EINA_UNUSED)
{
+ char *accessible_name;
//TIZEN_ONLY(20160919): make access object work with elm_interface_atspi_accessible_name,description_set
- char *ret = NULL;
+ const char *ret = NULL;
eo_do_super(obj, ELM_ACCESS_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
//
- return elm_access_info_get(obj, ELM_ACCESS_INFO);
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
+ accessible_name = elm_access_info_get(obj, ELM_ACCESS_INFO);
+ eina_stringshare_del(wd->accessible_name);
+ wd->accessible_name = eina_stringshare_add(accessible_name);
+ free(accessible_name);
+ return wd->accessible_name;
}
EOLIAN static const char*
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)
{
const char *ret;
ret = elm_app_name_get();
- return ret ? strdup(ret) : NULL;
+ return ret;
}
EOLIAN static const char*
if (!strcmp(property, "Name"))
{
- char *ret2;
- eo_do(obj, ret2 = elm_interface_atspi_accessible_name_get());
- if (!ret2)
- ret2 = strdup("");
- eldbus_message_iter_basic_append(iter, 's', ret2);
- free(ret2);
+ eo_do(obj, ret = elm_interface_atspi_accessible_name_get());
+ if (!ret)
+ ret = "";
+ eldbus_message_iter_basic_append(iter, 's', ret);
return EINA_TRUE;
}
else if (!strcmp(property, "Description"))
_iter_interfaces_append(iter_struct, data);
/* Marshall name */
- char *name = NULL;
+ const char *name = NULL;
eo_do(data, name = elm_interface_atspi_accessible_name_get());
if (!name)
- name = strdup("");
+ name = "";
eldbus_message_iter_basic_append(iter_struct, 's', name);
- free(name);
/* Marshall role */
eldbus_message_iter_basic_append(iter_struct, 'u', role);
return &atspi_actions[0];
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_color_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Color_Item_Data *it)
{
Eina_Strbuf *buf;
const char *color_name = NULL;
- char *name;
+ const char *name;
+ char *accessible_name;
eo_do_super(eo_it, ELM_COLOR_ITEM_CLASS, name = elm_interface_atspi_accessible_name_get());
- if (!name)
- {
- buf = eina_strbuf_new();
- color_name = _get_color_name(it->color->r, it->color->g, it->color->b, it->color->a);
- if (color_name)
- eina_strbuf_append_printf(buf, "%s", color_name);
- else
- eina_strbuf_append_printf(buf, "red %d, green %d, blue %d, alpha %d",
- it->color->r, it->color->g, it->color->b, it->color->a);
- name = strdup(eina_strbuf_string_steal(buf));
- eina_strbuf_free(buf);
- }
+ if (name) return name;
+
+ buf = eina_strbuf_new();
+ color_name = _get_color_name(it->color->r, it->color->g, it->color->b, it->color->a);
+ if (color_name)
+ eina_strbuf_append_printf(buf, "%s", color_name);
+ else
+ eina_strbuf_append_printf(buf, "red %d, green %d, blue %d, alpha %d",
+ it->color->r, it->color->g, it->color->b, it->color->a);
+ accessible_name = eina_strbuf_string_steal(buf);
+ eina_strbuf_free(buf);
- return name;
+ eina_stringshare_del(it->base->accessible_name);
+ it->base->accessible_name = eina_stringshare_add(accessible_name);
+ free(accessible_name);
+ return it->base->accessible_name;
}
/////
return ret;
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_entry_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd)
{
const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
- return ret ? strdup(ret) : NULL;
+ return ret;
}
//TIZEN ONLY (20160609): Added atspi action interface in entry
return ret;
}
-EOLIAN char*
+EOLIAN const char*
_elm_gengrid_item_elm_interface_atspi_accessible_name_get(Eo *eo_it, Elm_Gen_Item *it)
{
- char *ret;
+ const char *ret;
Eina_Strbuf *buf;
+ char *accessible_name;
eo_do_super(eo_it, ELM_GENGRID_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
}
}
- ret = eina_strbuf_string_steal(buf);
+ accessible_name = eina_strbuf_string_steal(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 Eina_List*
return ret;
}
-EOLIAN char*
+EOLIAN const char*
_elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
Elm_Gen_Item *it)
{
- char *ret;
+ const char *ret;
Eina_Strbuf *buf;
+ char *accessible_name;
eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
Elm_Genlist_Item_Type genlist_item_type = elm_genlist_item_type_get(eo_it);
eina_strbuf_append(buf,", header");
//
- ret = eina_strbuf_string_steal(buf);
+ accessible_name = eina_strbuf_string_steal(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 Eina_List*
return eina_list_clone(data->items);
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_index_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Index_Item_Data *data)
{
- return data->letter ? strdup(data->letter) : NULL;
+ return data->letter;
}
EOLIAN static const Elm_Atspi_Action*
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)
{
//TIZEN_ONLY(20190922): add name callback, description callback.
char *ret = NULL;
if (pd->name_cb_item.cb)
ret = pd->name_cb_item.cb((void *)pd->name_cb_item.data, (Evas_Object *)obj);
- if (ret) return strdup(ret);
+ if (ret)
+ {
+ eina_stringshare_replace(&pd->translation_domain, NULL);
+ pd->translation_domain = NULL;
+ eina_stringshare_replace(&pd->name, ret);
+ free(ret);
+ }
//
if (pd->name)
{
#ifdef ENABLE_NLS
if (pd->translation_domain)
- return strdup(dgettext(pd->translation_domain, pd->name));
- else
- return strdup(pd->name);
-#else
- return strdup(pd->name);
+ return dgettext(pd->translation_domain, pd->name);
#endif
+ return pd->name;
}
return NULL;
}
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);
}
const char * _elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
{
//TIZEN_ONLY(20190922): add name callback, description callback.
- const char *ret = NULL;
+ char *ret = NULL;
if (pd->description_cb_item.cb)
ret = pd->description_cb_item.cb((void *)pd->description_cb_item.data, (Evas_Object *)obj);
- if (ret) return ret;
+ if (ret)
+ {
+ eina_stringshare_replace(&pd->translation_domain, NULL);
+ pd->translation_domain = NULL;
+ eina_stringshare_replace(&pd->description, ret);
+ free(ret);
+ }
//
#ifdef ENABLE_NLS
]]
}
values {
- name: char*; [[obj name]]
+ name: const(char)*; [[obj name]]
}
}
//TIZEN_ONLY(20190922): add name callback, description callback.
return ret;
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_list_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_List_Item_Data *data)
{
- return data->label ? strdup(data->label) : NULL;
+ return data->label;
}
EOLIAN static Eina_List*
return sd->step;
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_spinner_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Spinner_Data *sd)
{
- char *name;
+ const char *name;
eo_do_super(obj, MY_CLASS, name = elm_interface_atspi_accessible_name_get());
if (name) return name;
const char *ret = NULL;
ret = elm_layout_text_get(obj, "elm.text");
}
//
- return ret ? strdup(ret) : NULL;
+ return ret;
}
// A11Y Accessibility - END
(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)
{
- char *ret;
+ const char *ret;
eo_do_super(eo_item, ELM_TOOLBAR_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
- return item->label ? strdup(item->label) : NULL;
+ return item->label;
}
EOLIAN static Elm_Atspi_State_Set
_if_focused_revert(obj, EINA_TRUE);
elm_widget_focus_custom_chain_unset(obj);
eina_stringshare_del(sd->access_info);
+ eina_stringshare_del(sd->accessible_name);
evas_object_smart_data_set(obj, NULL);
}
evas_object_del(item->view);
eina_stringshare_del(item->access_info);
+ eina_stringshare_del(item->accessible_name);
while (item->signals)
_elm_widget_item_signal_callback_list_get(item, item->signals);
}
//
-EOLIAN static char*
-_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
+EOLIAN static const char*
+_elm_widget_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd)
{
+ char *accessible_name;
//TIZEN_ONLY(20190922): add name callback, description callback.
const char *ret = NULL;
eo_do_super(obj, ELM_WIDGET_CLASS, ret = elm_interface_atspi_accessible_name_get());
{
#ifdef HAVE_GETTEXT
if (_pd->atspi_translation_domain)
- return strdup(dgettext(_pd->atspi_translation_domain, _pd->name));
- else
- return strdup(_pd->name);
-#else
- return strdup(_pd->name);
+ return dgettext(_pd->atspi_translation_domain, _pd->name);
#endif
+ return _pd->name;
}
//
ret = elm_object_text_get(obj);
if (!ret) return NULL;
- return (char *)_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;
}
//TIZEN_ONLY(20150713) : add atspi name setter to widget_item
EOLIAN void
-_elm_widget_item_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd EINA_UNUSED, char *name)
+_elm_widget_item_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd EINA_UNUSED, const char *name)
{
if (_pd->name)
eina_stringshare_del(_pd->name);
_pd->name = eina_stringshare_add(name);
}
-EOLIAN char*
+EOLIAN const char*
_elm_widget_item_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED)
{
//TIZEN_ONLY(20190922): add name callback, description callback.
- char *ret = NULL;
+ const char *ret = NULL;
eo_do_super(obj, ELM_WIDGET_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
//
{
#ifdef HAVE_GETTEXT
if (_pd->atspi_translation_domain)
- return strdup(dgettext(_pd->atspi_translation_domain, _pd->name));
- else
- return strdup(_pd->name);
-#else
- return strdup(_pd->name);
+ return dgettext(_pd->atspi_translation_domain, _pd->name);
#endif
+ return _pd->name;
}
return NULL;
//TIZEN_ONLY(20150717) add widget name setter
EOLIAN void
-_elm_widget_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data* _pd EINA_UNUSED, char *name)
+_elm_widget_elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data* _pd EINA_UNUSED, const char *name)
{
if (_pd->name)
eina_stringshare_del(_pd->name);
const char *style;
const char *focus_highlight_style; /**< custom focus style for a widget */
const char *access_info;
+ const char *accessible_name;
unsigned int focus_order;
Eina_Bool focus_order_on_calc;
Evas_Object *access_obj;
const char *access_info;
+ const char *accessible_name;
Eina_List *access_order;
Eina_Inlist *translate_strings;
Eina_List *signals;
return ret;
}
-EOLIAN static char*
+EOLIAN static const char*
_elm_win_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Win_Data *sd EINA_UNUSED)
{
const char *ret = elm_win_title_get(obj);
- return ret ? strdup(ret) : strdup("");
+ return ret;
}
#include "elm_win.eo.c"
}
//TIZEN ONLY(20160918): name interface added
-EOLIAN static char*
+EOLIAN static const char*
_elm_ctxpopup_elm_interface_atspi_accessible_name_get(Eo *obj, Elm_Ctxpopup_Data *sd EINA_UNUSED)
{
Eina_Strbuf *buf;
- char *ret = NULL;
+ char *accessible_name = NULL;
const char *style = elm_widget_style_get(obj);
+
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
buf = eina_strbuf_new();
if (!strcmp(style, "more/default"))
eina_strbuf_append_printf(buf, "%s", N_("More menu popup"));
else
eina_strbuf_append_printf(buf, "%s", N_("Alert"));
- ret = eina_strbuf_string_steal(buf);
+ accessible_name = eina_strbuf_string_steal(buf);
eina_strbuf_free(buf);
- return strdup(ret);
+
+ eina_stringshare_del(wd->accessible_name);
+ wd->accessible_name = eina_stringshare_add(accessible_name);
+ free(accessible_name);
+ return wd->accessible_name;
}
//
//
//TIZEN ONLY(20150710)ctxpopup: Accessible methods for children_get, extents_get and item name_get
-EOLIAN char *
+EOLIAN const char *
_elm_ctxpopup_item_elm_interface_atspi_accessible_name_get(Eo *eo_it EINA_UNUSED, Elm_Ctxpopup_Item_Data *item)
{
if(item->icon && !item->label)
{
- char *icon_name = NULL;
+ const char *icon_name = NULL;
eo_do(item->icon, icon_name = elm_interface_atspi_accessible_name_get());
- return icon_name ? strdup(icon_name): NULL;
+ return icon_name;
}
else
- return item->label ? strdup(item->label) : NULL;
+ return item->label;
}
//
return ret;
}
-EOLIAN char*
+EOLIAN const char*
_elm_genlist_item_elm_interface_atspi_accessible_name_get(Eo *eo_it,
Elm_Gen_Item *it)
{
- char *ret;
+ const char *ret;
Eina_Strbuf *buf;
+ char *accessible_name;
eo_do_super(eo_it, ELM_GENLIST_ITEM_CLASS, ret = elm_interface_atspi_accessible_name_get());
if (ret) return ret;
Elm_Genlist_Item_Type genlist_item_type = elm_genlist_item_type_get(eo_it);
eina_strbuf_append(buf,", header");
//
- ret = eina_strbuf_string_steal(buf);
+ accessible_name = eina_strbuf_string_steal(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 Eina_List*
elm_init(0, NULL);
generate_app();
- char *name;
+ const char *name;
eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
ck_assert(0);
}
- free(name);
-
// Set name with additional text tags
elm_object_text_set(g_btn, "Some<br>text");
ck_assert(name != NULL);
ck_assert_str_eq(name, "Some\ntext");
- free(name);
elm_shutdown();
}
END_TEST
elm_init(0, NULL);
generate_app();
- char *name;
+ const char *name;
elm_object_text_set(g_btn, "Other text");
eo_do(g_btn, elm_interface_atspi_accessible_name_set("Test name"));
ck_assert(name != NULL);
ck_assert_str_eq(name, "Test name");
- free(name);
-
eo_do(g_btn, elm_interface_atspi_accessible_name_set(NULL));
eo_do(g_btn, name = elm_interface_atspi_accessible_name_get());
ck_assert(name != NULL);
ck_assert_str_eq(name, "Other text");
- free(name);
-
elm_shutdown();
}
END_TEST