[atspi] add widget/widget_item accessible_description_set/get 75/166675/6
authorJunsuChoi <jsuya.choi@samsung.com>
Thu, 11 Jan 2018 10:48:34 +0000 (19:48 +0900)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 12 Jan 2018 06:33:46 +0000 (06:33 +0000)
   Because the translatable domain exits in widget/widget_item data, it does not work with base interface description_set/get.
   http://suprem.sec.samsung.net/jira/browse/TSAM-9930

   atspi: add i18n support for name and description
      Add new API to set atspi translation domain for name and description properties.
      If translation domain is not set name and a description strings
      will be used in its literal form.
   commit id : 853c746f3f42791322c5dfeabdf06019e86903af

   Backport atspi patches from Elementary 1.14 RC
      Merge branch 'devs/stanluk/eo_object_items_atspi'
      Make elm object items atspi-aware objects. Implement atspi support
      for elm_genlist, elm_gengrid and elm_toolbar items.
      atspi: add missing signals array sentiel.
      @fix
   commit id : 38948bd86563a3db00148f7dd0905139b160e648

Change-Id: I567a9b69bb160a68d8fb89f69a6e67db12d4614f

src/lib/elementary/efl_ui_widget.c
src/lib/elementary/efl_ui_widget.eo
src/lib/elementary/elm_widget.h
src/lib/elementary/elm_widget_item.eo

index 1e28fa3..ed36095 100644 (file)
@@ -5514,6 +5514,31 @@ _efl_ui_widget_efl_access_name_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUS
    return _elm_widget_accessible_plain_name_get(obj, ret);
 }
 
+//TIZEN_ONLY(20161111) add widget/widget_item description get/set
+EOLIAN void
+_efl_ui_widget_efl_access_description_set(Eo *obj EINA_UNUSED, Efl_Ui_Widget_Data* _pd, const char *description)
+{
+   if (_pd->description)
+     eina_stringshare_del(_pd->description);
+
+   _pd->description = eina_stringshare_add(description);
+}
+
+EOLIAN static const char*
+_efl_ui_widget_efl_access_description_get(Eo *obj EINA_UNUSED, Efl_Ui_Widget_Data *_pd EINA_UNUSED)
+{
+   const char *ret = NULL;
+   ret = efl_access_description_get(obj);
+   if (ret) return ret;
+
+#ifdef HAVE_GETTEXT
+   if (_pd->atspi_translation_domain)
+     return dgettext(_pd->atspi_translation_domain, _pd->description);
+#endif
+   return _pd->description;
+}
+//
+
 //TIZEN_ONLY(20171108): make atspi_proxy work
 static void
 _proxy_widget_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
@@ -5547,6 +5572,31 @@ _on_proxy_connected_cb(void *data, const Efl_Event *event)
 }
 //
 
+//TIZEN_ONLY(20161111) add widget/widget_item description get/set
+EOLIAN void
+_elm_widget_item_efl_access_description_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data* _pd EINA_UNUSED, const char *description)
+{
+   if (_pd->description)
+     eina_stringshare_del(_pd->description);
+
+   _pd->description = eina_stringshare_add(description);
+}
+
+EOLIAN const char*
+_elm_widget_item_efl_access_description_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd EINA_UNUSED)
+{
+   const char *ret = NULL;
+   ret = efl_access_description_get(obj);
+   if (ret) return ret;
+
+#ifdef HAVE_GETTEXT
+   if (_pd->atspi_translation_domain)
+     return dgettext(_pd->atspi_translation_domain, _pd->description);
+#endif
+   return _pd->description;
+}
+//
+
 //TIZEN_ONLY(20171114) : spatially sort atspi children
 static int _sort_vertically(const void *data1, const void *data2)
 {
index d3e3894..0bf22dc 100644 (file)
@@ -627,6 +627,9 @@ abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access,
       Efl.Access.parent { get; }
       Efl.Access.attributes { get; }
       Efl.Access.Component.focus_grab;
+      //TIZEN_ONLY(20161111) add widget/widget_item description get/set
+      Efl.Access.description { set; get; }
+      //
       //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
       Efl.Access.Component.accessible_at_point_get;
       Efl.Access.Component.highlight_grab;
index e66f46e..7643005 100644 (file)
@@ -415,6 +415,13 @@ typedef struct _Elm_Widget_Smart_Data
    unsigned int                  focus_order;
    Eina_Bool                     focus_order_on_calc;
 
+   int                          role;         /**< Accessibility role */
+   const char                   *description; /**< Accessibility description */
+   //Eo                           *atspi_custom_parent; /**< Accessibility parent if different then parent_obj */
+   //TIZEN_ONLY(20150731) : add i18n support for name and description
+   const char                   *atspi_translation_domain;
+   ///
+
    int                           child_drag_x_locked;
    int                           child_drag_y_locked;
 
@@ -655,6 +662,13 @@ struct _Elm_Widget_Item_Data
    Eina_Hash                     *labels;
    Evas_Object                   *track_obj;
 
+   /**< A11Y info */
+   const char                    *description;
+   int                            role;
+   //TIZEN_ONLY(20150731) : add i18n support for name and description
+   const char                    *atspi_translation_domain;
+   ///
+
    Eina_Bool                      disabled : 1;
    Eina_Bool                      on_deletion : 1;
    Eina_Bool                      on_translate : 1;
index f98bbea..0b447c8 100644 (file)
@@ -542,6 +542,9 @@ class Elm.Widget.Item(Efl.Object, Efl.Access,
            Efl.Object.destructor;
            Efl.Access.state_set { get; }
            Efl.Access.attributes { get; }
+           //TIZEN_ONLY(20161111) add widget/widget_item description get/set
+           Efl.Access.description { set; get; }
+           //
           //TIZEN_ONLY(20160726): add API elm_atspi_accessible_can_highlight_set/get
            Efl.Access.can_highlight { get; set; }
           //