summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinwoo Kim <cinoo.kim@samsung.com>2016-11-10 10:58:41 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-11-10 11:11:48 +0900
commite648f1e85e2d1be78bc2cb6a2b2aa87227bcfe89 (patch)
treeae2351dab937b907f0d7ad961213f239149b2b76
parent7917fa4ebfad0c02e9b054c3b6f0108fc8ec759f (diff)
downloadefl-e648f1e85e2d1be78bc2cb6a2b2aa87227bcfe89.tar.gz
[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
-rw-r--r--src/lib/elementary/efl_ui_text.c6
-rw-r--r--src/lib/elementary/efl_ui_win.c6
-rw-r--r--src/lib/elementary/elc_multibuttonentry.c6
-rw-r--r--src/lib/elementary/elm_atspi_app_object.c4
-rw-r--r--src/lib/elementary/elm_atspi_bridge.c15
-rw-r--r--src/lib/elementary/elm_entry.c6
-rw-r--r--src/lib/elementary/elm_gengrid.c13
-rw-r--r--src/lib/elementary/elm_genlist.c13
-rw-r--r--src/lib/elementary/elm_index.c6
-rw-r--r--src/lib/elementary/elm_interface_atspi_accessible.c18
-rw-r--r--src/lib/elementary/elm_interface_atspi_accessible.eo2
-rw-r--r--src/lib/elementary/elm_list.c6
-rw-r--r--src/lib/elementary/elm_menu.c6
-rw-r--r--src/lib/elementary/elm_spinner.c6
-rw-r--r--src/lib/elementary/elm_toolbar.c6
-rw-r--r--src/lib/elementary/elm_widget.c16
-rw-r--r--src/lib/elementary/elm_widget.h2
-rw-r--r--src/tests/elementary/elm_test_atspi.c11
18 files changed, 74 insertions, 74 deletions
diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index 7e8fabb785..2cf59ab005 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -4808,14 +4808,14 @@ _efl_ui_text_elm_interface_atspi_accessible_state_set_get(Eo *obj, Efl_Ui_Text_D
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)
{
- char *name;
+ const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_TEXT_CLASS));
if (name && strncmp("", name, 1)) return name;
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 *
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 2686e5c9d2..3ad9322c98 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -6205,14 +6205,14 @@ _efl_ui_win_elm_interface_atspi_accessible_state_set_get(Eo *obj, Efl_Ui_Win_Dat
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)
{
- char *ret;
+ const char *ret;
ret = elm_interface_atspi_accessible_name_get(efl_super(obj, EFL_UI_WIN_CLASS));
if (ret) return ret;
const char *name = elm_win_title_get(obj);
- return name ? strdup(name) : NULL;
+ return name;
}
EOLIAN static Eina_Bool
diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c
index fb76690785..f9a10b3469 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -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);
}
-EOLIAN static char*
+EOLIAN static const char*
_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));
if (ret) return ret;
const char *txt = elm_object_part_text_get(VIEW(item), "elm.btn.text");
- return txt ? strdup(txt) : NULL;
+ return txt;
}
static Eina_Bool
diff --git a/src/lib/elementary/elm_atspi_app_object.c b/src/lib/elementary/elm_atspi_app_object.c
index bf44597157..2b905523fa 100644
--- a/src/lib/elementary/elm_atspi_app_object.c
+++ b/src/lib/elementary/elm_atspi_app_object.c
@@ -44,12 +44,12 @@ _elm_atspi_app_object_elm_interface_atspi_accessible_children_get(Eo *obj EINA_U
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*
diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c
index 880a338055..7d004cd23e 100644
--- a/src/lib/elementary/elm_atspi_bridge.c
+++ b/src/lib/elementary/elm_atspi_bridge.c
@@ -2075,12 +2075,10 @@ _accessible_property_get(const Eldbus_Service_Interface *interface, const char *
if (!strcmp(property, "Name"))
{
- char *ret2;
- ret2 = elm_interface_atspi_accessible_name_get(obj);
- if (!ret2)
- ret2 = strdup("");
- eldbus_message_iter_basic_append(iter, 's', ret2);
- free(ret2);
+ ret = elm_interface_atspi_accessible_name_get(obj);
+ if (!ret)
+ ret = "";
+ eldbus_message_iter_basic_append(iter, 's', ret);
return EINA_TRUE;
}
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);
/* Marshall name */
- char *name = NULL;
+ const char *name = NULL;
name = elm_interface_atspi_accessible_name_get(data);
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);
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 49fdac8eb5..0af5d8cbe3 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -5983,14 +5983,14 @@ _elm_entry_elm_interface_atspi_accessible_state_set_get(Eo *obj, Elm_Entry_Data
return ret;
}
-EOLIAN static char*
+EOLIAN static const char*
_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));
if (name && strncmp("", name, 1)) return name;
const char *ret = edje_object_part_text_get(sd->entry_edje, "elm.guide");
- return ret ? strdup(ret) : NULL;
+ return ret;
}
/* Efl.Part begin */
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 768d6b2936..4329685320 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -5773,11 +5773,12 @@ _elm_gengrid_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
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;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENGRID_ITEM_CLASS));
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);
- 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 *
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 856441e455..ba727ed10c 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -8221,11 +8221,12 @@ _elm_genlist_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_Ge
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;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_it, ELM_GENLIST_ITEM_CLASS));
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);
- 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
diff --git a/src/lib/elementary/elm_index.c b/src/lib/elementary/elm_index.c
index beb0563f14..428a5138ae 100644
--- a/src/lib/elementary/elm_index.c
+++ b/src/lib/elementary/elm_index.c
@@ -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);
}
-EOLIAN static char*
+EOLIAN static const char*
_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));
if (name) return name;
- return data->letter ? strdup(data->letter) : NULL;
+ return data->letter;
}
EOLIAN static const Elm_Atspi_Action*
diff --git a/src/lib/elementary/elm_interface_atspi_accessible.c b/src/lib/elementary/elm_interface_atspi_accessible.c
index 9f576aa7d7..22afbaabeb 100644
--- a/src/lib/elementary/elm_interface_atspi_accessible.c
+++ b/src/lib/elementary/elm_interface_atspi_accessible.c
@@ -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];
}
-EOLIAN char *
+EOLIAN const char *
_elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd)
{
- 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);
+ if (pd->translation_domain)
+ return dgettext(pd->translation_domain, pd->name);
#endif
- }
-
- return NULL;
+ return pd->name;
}
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);
}
diff --git a/src/lib/elementary/elm_interface_atspi_accessible.eo b/src/lib/elementary/elm_interface_atspi_accessible.eo
index 3a746e723f..15a0c5ad10 100644
--- a/src/lib/elementary/elm_interface_atspi_accessible.eo
+++ b/src/lib/elementary/elm_interface_atspi_accessible.eo
@@ -256,7 +256,7 @@ mixin Elm.Interface.Atspi_Accessible ()
set {
}
values {
- name: ptr(char); [[Object name]]
+ name: string; [[Object name]]
}
}
@property relation_set @protected {
diff --git a/src/lib/elementary/elm_list.c b/src/lib/elementary/elm_list.c
index 8f2ca840f8..710c5cb07e 100644
--- a/src/lib/elementary/elm_list.c
+++ b/src/lib/elementary/elm_list.c
@@ -2144,13 +2144,13 @@ _elm_list_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_it, Elm_List_
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)
{
- char *ret;
+ 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 ? strdup(data->label) : NULL;
+ return data->label;
}
static char *
diff --git a/src/lib/elementary/elm_menu.c b/src/lib/elementary/elm_menu.c
index a58600050e..5127ef09da 100644
--- a/src/lib/elementary/elm_menu.c
+++ b/src/lib/elementary/elm_menu.c
@@ -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;
}
-EOLIAN static char*
+EOLIAN static const char*
_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));
if (ret) return ret;
- return sd->label ? strdup(sd->label) : NULL;
+ return sd->label;
}
EOLIAN static Elm_Atspi_State_Set
diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c
index 9e7b0552d0..78b12e6cc0 100644
--- a/src/lib/elementary/elm_spinner.c
+++ b/src/lib/elementary/elm_spinner.c
@@ -1736,14 +1736,14 @@ _elm_spinner_elm_interface_atspi_value_increment_get(Eo *obj EINA_UNUSED, Elm_Sp
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)
{
- char *name;
+ const char *name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_SPINNER_CLASS));
if (name) return name;
const char *ret = elm_layout_text_get(obj, "elm.text");
- return ret ? strdup(ret) : NULL;
+ return ret;
}
// A11Y Accessibility - END
diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c
index e9bbc9f02b..4f70b47eda 100644
--- a/src/lib/elementary/elm_toolbar.c
+++ b/src/lib/elementary/elm_toolbar.c
@@ -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);
}
-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;
ret = elm_interface_atspi_accessible_name_get(efl_super(eo_item, ELM_TOOLBAR_ITEM_CLASS));
if (ret) return ret;
- return item->label ? strdup(item->label) : NULL;
+ return 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 2c9f8ed367..f7f2def23f 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -482,6 +482,7 @@ _elm_widget_efl_canvas_group_group_del(Eo *obj, Elm_Widget_Smart_Data *sd)
_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);
}
@@ -4576,6 +4577,7 @@ _elm_widget_item_efl_object_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
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);
@@ -5939,11 +5941,11 @@ _elm_widget_elm_interface_atspi_component_focus_grab(Eo *obj, Elm_Widget_Smart_D
return EINA_FALSE;
}
-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)
{
- const char *ret;
- char *name;
+ const char *ret, *name;
+ char *accessible_name;
name = elm_interface_atspi_accessible_name_get(efl_super(obj, ELM_WIDGET_CLASS));
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);
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*
diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h
index 28b35492d0..8115111345 100644
--- a/src/lib/elementary/elm_widget.h
+++ b/src/lib/elementary/elm_widget.h
@@ -410,6 +410,7 @@ typedef struct _Elm_Widget_Smart_Data
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;
@@ -603,6 +604,7 @@ struct _Elm_Widget_Item_Data
Evas_Object *access_obj;
const char *access_info;
+ const char *accessible_name;
Eina_List *access_order;
Eina_Inlist *translate_strings;
Eina_List *signals;
diff --git a/src/tests/elementary/elm_test_atspi.c b/src/tests/elementary/elm_test_atspi.c
index 630febc9c1..8f9e043870 100644
--- a/src/tests/elementary/elm_test_atspi.c
+++ b/src/tests/elementary/elm_test_atspi.c
@@ -51,7 +51,7 @@ START_TEST (elm_atspi_name_get)
elm_init(0, NULL);
generate_app();
- char *name;
+ const char *name;
name = elm_interface_atspi_accessible_name_get(g_btn);
@@ -59,8 +59,6 @@ START_TEST (elm_atspi_name_get)
ck_assert(0);
}
- free(name);
-
// Set name with additional text tags
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_str_eq(name, "Some\ntext");
- free(name);
elm_shutdown();
}
END_TEST
@@ -80,7 +77,7 @@ START_TEST (elm_atspi_name_set)
elm_init(0, NULL);
generate_app();
- char *name;
+ const char *name;
elm_object_text_set(g_btn, "Other text");
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_str_eq(name, "Test name");
- free(name);
-
elm_interface_atspi_accessible_name_set(g_btn, NULL);
name = elm_interface_atspi_accessible_name_get(g_btn);
ck_assert(name != NULL);
ck_assert_str_eq(name, "Other text");
- free(name);
-
elm_shutdown();
}
END_TEST