efl_access_object: Support org.a11y.atspi.Value.Text property
[platform/upstream/efl.git] / src / lib / elementary / efl_access_object.c
index f08a3f0..b95cffa 100644 (file)
@@ -155,6 +155,9 @@ struct _Efl_Access_Object_Data
    Efl_Access_Reading_Info_Cb_Item name_cb_item;
    Efl_Access_Reading_Info_Cb_Item description_cb_item;
    //
+   //TIZEN_ONLY(20230414): Support org.a11y.atspi.Value.Text property.
+   Efl_Access_Reading_Info_Cb_Item value_text_cb_item;
+   //
    //TIZEN_ONLY(20170405) Add gesture method to accessible interface
    Efl_Access_Gesture_Cb_Item gesture_cb_item;
    Elm_Atspi_Gesture_Cb_Item legacy_gesture_cb_item;
@@ -162,6 +165,9 @@ struct _Efl_Access_Object_Data
    Eina_List     *attr_list;
    const char    *name;
    const char    *description;
+   //TIZEN_ONLY(20230414): Support org.a11y.atspi.Value.Text property.
+   const char    *value_text;
+   //
    const char    *translation_domain;
    Efl_Access_Role role;
    Efl_Access_Reading_Info_Type_Mask reading_info;
@@ -465,6 +471,35 @@ _efl_access_object_description_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Dat
 }
 //
 
+//TIZEN_ONLY(20230414): Support org.a11y.atspi.Value.Text property.
+EOLIAN static const char *
+_efl_access_object_value_text_get(const Eo *obj, Efl_Access_Object_Data *pd)
+{
+   char *ret = NULL;
+   if (pd->value_text_cb_item.cb)
+     ret = pd->value_text_cb_item.cb((void *)pd->value_text_cb_item.data, (Eo *)obj);
+   if (ret)
+     {
+        eina_stringshare_replace(&pd->value_text, ret);
+        free(ret);
+     }
+   return pd->value_text;
+}
+
+EOLIAN static void
+_efl_access_object_value_text_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, const char *val)
+{
+   eina_stringshare_replace(&pd->value_text, val);
+}
+
+EOLIAN static void
+_efl_access_object_value_text_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Reading_Info_Cb value_text_cb, const void *data)
+{
+   pd->value_text_cb_item.cb = value_text_cb;
+   pd->value_text_cb_item.data = data;
+}
+//
+
 //TIZEN_ONLY(20170405) Add gesture method to accessible interface
 EOLIAN static void
 _efl_access_object_gesture_cb_set(Eo *obj EINA_UNUSED, Efl_Access_Object_Data *pd, Efl_Access_Gesture_Cb gesture_cb, const void *data)