From: Kamil Lipiszko Date: Fri, 25 Sep 2015 10:24:36 +0000 (+0200) Subject: navigator: generate additonal trait from LABELLED_BY relation X-Git-Tag: accepted/tizen/tv/20160311.055419~46 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7ddeedc0cb2edd0918d73b8f847fc880d2a16e1d;p=profile%2Ftv%2Fapps%2Fnative%2Fscreen-reader.git navigator: generate additonal trait from LABELLED_BY relation Change-Id: Ie964d0f524d01138ebfabed190754ebd7edfab72 Signed-off-by: Kamil Lipiszko --- diff --git a/src/navigator.c b/src/navigator.c index 4d7c335..61e22e7 100644 --- a/src/navigator.c +++ b/src/navigator.c @@ -612,6 +612,21 @@ static char *generate_description_from_relation_object(AtspiAccessible *obj) return ret; } +static char *generate_name_from_relation_object(AtspiAccessible *obj) +{ + GError *err = NULL; + char *name = atspi_accessible_get_name(obj, &err); + + if(err) + { + g_error_free(err); + g_free(name); + return NULL; + } + + return name; +} + static char *generate_what_to_read(AtspiAccessible * obj) { char *name; @@ -622,12 +637,14 @@ static char *generate_what_to_read(AtspiAccessible * obj) char *text = NULL; char ret[TTS_MAX_TEXT_SIZE] = "\0"; char *description_from_relation; + char *name_from_relation; description = atspi_accessible_get_description(obj, NULL); name = atspi_accessible_get_name(obj, NULL); role_name = generate_trait(obj); other = generate_description_for_subtrees(obj); description_from_relation = generate_text_for_relation_objects(obj, ATSPI_RELATION_DESCRIBED_BY, generate_description_from_relation_object); + name_from_relation = generate_text_for_relation_objects(obj, ATSPI_RELATION_LABELLED_BY, generate_name_from_relation_object); AtspiText *iface_text = atspi_accessible_get_text_iface(obj); if (iface_text) { text = atspi_text_get_text(iface_text, 0, atspi_text_get_character_count(iface_text, NULL), NULL); @@ -656,6 +673,11 @@ static char *generate_what_to_read(AtspiAccessible * obj) strncat(ret, names, sizeof(ret) - strlen(ret) - 1); } + if (name_from_relation && strlen(name_from_relation) > 0) + if(strlen(ret) > 0) + strncat(ret, ", ", sizeof(ret) - strlen(ret) - 1); + strncat(ret, name_from_relation, sizeof(ret) - strlen(ret) - 1); + if (role_name && strlen(role_name) > 0) { if (strlen(ret) > 0) strncat(ret, ", ", sizeof(ret) - strlen(ret) - 1); @@ -677,6 +699,7 @@ static char *generate_what_to_read(AtspiAccessible * obj) free(text); free(name); free(names); + free(name_from_relation); free(description); free(role_name); free(other);