navigator: generate additonal trait from LABELLED_BY relation
authorKamil Lipiszko <k.lipiszko@samsung.com>
Fri, 25 Sep 2015 10:24:36 +0000 (12:24 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 25 Sep 2015 12:29:35 +0000 (21:29 +0900)
Change-Id: Ie964d0f524d01138ebfabed190754ebd7edfab72
Signed-off-by: Kamil Lipiszko <k.lipiszko@samsung.com>
src/navigator.c

index 4d7c335..61e22e7 100644 (file)
@@ -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);