elm: atspi - bring HIGHLIGHT related changes
authorShinwoo Kim <cinoo.kim@samsung.com>
Wed, 8 Nov 2017 01:28:05 +0000 (10:28 +0900)
committerJiyoun Park <jy0703.park@samsung.com>
Tue, 19 Dec 2017 00:53:27 +0000 (09:53 +0900)
1. atspi: implement HighlightGrab and HighlightClear methods
  - commit 29e253e2f7ef3c632ac3a64c489bf569df407f30
  - Author: Lukasz Stanislawski <l.stanislaws@samsung.com>
  - Date:   Wed Dec 9 15:19:29 2015 +0100

2. win: add accessibility highlight.
  - commit d4753268ad02d0c25c16f815003c70b158879ca7
  - Author: Lukasz Stanislawski <l.stanislaws@samsung.com>
  - Date:   Wed Dec 9 10:03:31 2015 +0100
  - Accessibility highlight allows to visually marked given Evas_Object
    on elementary window. Its main purpose is to attract user attention
    to given object without triggering any widget events focus changes etc.
    Accessibility highlight is pararell concept to focus higlight.

@tizen_feature

Change-Id: I647feaf83dd1ad80a4586e6bf20f3792bd5203a1

src/lib/elementary/efl_access.eo
src/lib/elementary/efl_access_component.c
src/lib/elementary/efl_access_component.eo
src/lib/elementary/efl_ui_win.c
src/lib/elementary/elm_atspi_bridge.c
src/lib/elementary/elm_main.c
src/lib/elementary/elm_object.h
src/lib/elementary/elm_widget.c
src/lib/elementary/elm_widget.eo
src/lib/elementary/elm_widget.h
src/lib/elementary/elm_widget_item.eo

index d32be85..090bd7a 100644 (file)
@@ -163,6 +163,13 @@ enum Efl.Access.State_Type
    selectable_text, [[State: selectable text]]
    is_default, [[State: is default]]
    visited, [[State: visited]]
+   //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+   checkable, [[State: checkable]]
+   has_popup, [[State: has popup]]
+   read_only, [[State: read only]]
+   highlighted, [[State: highlighted]]
+   highlightable, [[State: highlightable]]
+   //
    last_defined,  [[Last enum entry sentinel]]
 }
 
index c53c51f..e6dbb85 100644 (file)
@@ -159,4 +159,22 @@ _efl_access_component_focus_grab(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
    return evas_object_focus_get(obj);
 }
 
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+EOLIAN static Eina_Bool
+_efl_access_component_highlight_grab(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
+{
+   WRN("The %s object does not implement the \"component_highlight_grab\" function.",
+       efl_class_name_get(efl_class_get(obj)));
+   return EINA_FALSE;
+}
+
+EOLIAN static Eina_Bool
+_efl_access_component_highlight_clear(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED)
+{
+   WRN("The %s object does not implement the \"component_highlight_clear\" function.",
+       efl_class_name_get(efl_class_get(obj)));
+   return EINA_FALSE;
+}
+//
+
 #include "efl_access_component.eo.c"
index c6f6964..dca3524 100644 (file)
@@ -99,5 +99,17 @@ mixin Efl.Access.Component ()
          }
          return: Efl.Object; [[Top component object at given coordinate]]
       }
+      //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+      highlight_grab @protected {
+         [[ Highlights accessible widget.
+         returns true if highlight grab has successed, false otherwise. ]]
+         return: bool;
+      }
+      highlight_clear @protected {
+         [[ Clears highlight of accessible widget.
+         returns true if clear has successed, false otherwise. ]]
+         return: bool;
+      }
+      //
    }
 }
index 54945cb..c556800 100644 (file)
@@ -167,6 +167,15 @@ struct _Efl_Ui_Win_Data
       Eina_Bool    auto_animate : 1;
    } focus_highlight;
 
+   //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+   struct
+   {
+      Evas_Object *fobj; /*accessibility highlight edje object */
+      Evas_Object *target;
+      Eina_Bool enabled;
+   } accessibility_highlight;
+   //
+
    Evas_Object *icon;
    const char  *title;
    const char  *icon_name;
@@ -341,6 +350,10 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
 
 static Eina_Bool _key_action_return(Evas_Object *obj, const char *params);
 static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+static void _elm_win_accessibility_highlight_shutdown(Efl_Ui_Win_Data *sd);
+static void _elm_win_accessibility_highlight_update(Efl_Ui_Win_Data *sd);
+//
 
 static const Elm_Action key_actions[] = {
    {"return", _key_action_return},
@@ -2867,6 +2880,9 @@ _efl_ui_win_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Win_Data *sd)
      }
 
    _elm_win_focus_highlight_shutdown(sd);
+   //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+   _elm_win_accessibility_highlight_shutdown(sd);
+   //
    eina_stringshare_del(sd->focus_highlight.style);
 
    eina_stringshare_del(sd->title);
@@ -8591,6 +8607,170 @@ elm_win_available_profiles_set(Elm_Win *obj, const char **profiles, unsigned int
    else efl_ui_win_wm_available_profiles_set(obj, NULL);
 }
 
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+static void
+_elm_win_accessibility_highlight_obj_del(void *data,
+                                         Evas *e EINA_UNUSED,
+                                         Evas_Object *obj EINA_UNUSED,
+                                         void *event_info EINA_UNUSED)
+{
+   ELM_WIN_DATA_GET(data, sd);
+   _elm_win_accessibility_highlight_shutdown(sd);
+}
+
+static void
+_elm_win_accessibility_highlight_obj_move(void *data,
+                                          Evas *e EINA_UNUSED,
+                                          Evas_Object *obj EINA_UNUSED,
+                                          void *event_info EINA_UNUSED)
+{
+   ELM_WIN_DATA_GET(data, sd);
+   _elm_win_accessibility_highlight_update(sd);
+}
+
+static void
+_elm_win_accessibility_highlight_obj_resize(void *data,
+                                            Evas *e EINA_UNUSED,
+                                            Evas_Object *obj EINA_UNUSED,
+                                            void *event_info EINA_UNUSED)
+{
+   ELM_WIN_DATA_GET(data, sd);
+   _elm_win_accessibility_highlight_update(sd);
+}
+
+static void _elm_win_accessibility_highlight_callbacks_add(Efl_Ui_Win_Data *sd)
+{
+   Evas_Object *obj = sd->accessibility_highlight.target;
+   if (!obj) return;
+
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _elm_win_accessibility_highlight_obj_del, sd->obj);
+
+   if (efl_isa(obj, ELM_WIDGET_CLASS) && elm_widget_access_highlight_in_theme_get(obj))
+      return;
+
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _elm_win_accessibility_highlight_obj_move, sd->obj);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _elm_win_accessibility_highlight_obj_resize, sd->obj);
+}
+
+static void _elm_win_accessibility_highlight_callbacks_del(Efl_Ui_Win_Data *sd)
+{
+   Evas_Object *obj = sd->accessibility_highlight.target;
+   if (!obj) return;
+
+   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL, _elm_win_accessibility_highlight_obj_del, sd->obj);
+
+   if (efl_isa(obj, ELM_WIDGET_CLASS) && elm_widget_access_highlight_in_theme_get(obj))
+      return;
+
+   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOVE, _elm_win_accessibility_highlight_obj_move, sd->obj);
+   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_RESIZE, _elm_win_accessibility_highlight_obj_resize, sd->obj);
+}
+
+static void _elm_win_accessibility_highlight_init(Efl_Ui_Win_Data *sd)
+{
+   if (sd->accessibility_highlight.enabled) return;
+   sd->accessibility_highlight.enabled = EINA_TRUE;
+
+   sd->accessibility_highlight.fobj = edje_object_add(sd->evas);
+   elm_widget_theme_object_set(sd->obj, sd->accessibility_highlight.fobj, "access", "base", "default");
+}
+
+static void
+_elm_win_accessibility_highlight_visible_set(Efl_Ui_Win_Data *sd,
+Eina_Bool visible)
+{
+   Evas_Object *fobj = sd->accessibility_highlight.fobj;
+   Evas_Object *target = sd->accessibility_highlight.target;
+
+   if (!target) return;
+
+   if (efl_isa(target, ELM_WIDGET_CLASS) && elm_widget_access_highlight_in_theme_get(target))
+     {
+        if (visible)
+          elm_widget_signal_emit(target, "elm,action,access_highlight,show", "elm");
+        else
+          elm_widget_signal_emit(target, "elm,action,access_highlight,hide", "elm");
+        }
+   else
+     {
+        if (visible)
+          evas_object_show(fobj);
+        else
+          evas_object_hide(fobj);
+     }
+}
+
+static void
+_elm_win_accessibility_highlight_update(Efl_Ui_Win_Data *sd)
+{
+   Evas_Coord x, y, w, h;
+   Evas_Object *target = sd->accessibility_highlight.target;
+   Evas_Object *fobj = sd->accessibility_highlight.fobj;
+
+   if (!target) return;
+   if (efl_isa(target, ELM_WIDGET_CLASS) && elm_widget_access_highlight_in_theme_get(target))
+      return;
+
+   evas_object_geometry_get(target, &x, &y, &w, &h);
+   evas_object_move(fobj, x, y);
+   evas_object_resize(fobj, w, h);
+   evas_object_raise(fobj);
+}
+
+static void
+_elm_win_accessibility_highlight_target_set(Efl_Ui_Win_Data *sd, Evas_Object *target)
+{
+   Evas_Object *clip, *fobj = sd->accessibility_highlight.fobj;
+
+   if (sd->accessibility_highlight.target == target)
+      return;
+
+   _elm_win_accessibility_highlight_visible_set(sd, EINA_FALSE);
+   _elm_win_accessibility_highlight_callbacks_del(sd);
+
+   sd->accessibility_highlight.target = target;
+   if (!target) return;
+
+   clip = evas_object_clip_get(target);
+   if (clip) evas_object_clip_set(fobj, clip);
+
+   _elm_win_accessibility_highlight_callbacks_add(sd);
+   _elm_win_accessibility_highlight_update(sd);
+   _elm_win_accessibility_highlight_visible_set(sd, EINA_TRUE);
+}
+
+static void _elm_win_accessibility_highlight_shutdown(Efl_Ui_Win_Data *sd)
+{
+   if (!sd->accessibility_highlight.enabled) return;
+
+   _elm_win_accessibility_highlight_target_set(sd, NULL);
+   evas_object_del(sd->accessibility_highlight.fobj);
+   sd->accessibility_highlight.fobj = NULL;
+   sd->accessibility_highlight.enabled = EINA_FALSE;
+}
+
+void
+_elm_win_accessibility_highlight_set(Evas_Object *win, Evas_Object *obj)
+{
+   ELM_WIN_DATA_GET_OR_RETURN(win, sd);
+
+   if (obj)
+      {
+         _elm_win_accessibility_highlight_init(sd);
+         _elm_win_accessibility_highlight_target_set(sd, obj);
+      }
+   else
+     _elm_win_accessibility_highlight_shutdown(sd);
+}
+
+Evas_Object*
+_elm_win_accessibility_highlight_get(Evas_Object *win)
+{
+   ELM_WIN_DATA_GET_OR_RETURN(win, sd, NULL);
+   return sd->accessibility_highlight.target;
+}
+//
+
 // deprecated
 
 EAPI void
index 09ea6a1..56ca460 100644 (file)
@@ -3486,6 +3486,50 @@ _component_grab_focus(const Eldbus_Service_Interface *iface EINA_UNUSED, const E
    return ret;
 }
 
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+static Eldbus_Message *
+_component_grab_highlight(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+   const char *obj_path = eldbus_message_path_get(msg);
+   Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
+   Eo *obj = _bridge_object_from_path(bridge, obj_path);
+   Eldbus_Message *ret;
+   Eina_Bool highlight = EINA_FALSE;
+
+   ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg);
+
+   eo_do(obj, highlight = elm_interface_atspi_component_highlight_grab());
+
+   ret = eldbus_message_method_return_new(msg);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
+
+   eldbus_message_arguments_append(ret, "b", highlight);
+
+   return ret;
+}
+
+static Eldbus_Message *
+_component_clear_highlight(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+   const char *obj_path = eldbus_message_path_get(msg);
+   Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
+   Eo *obj = _bridge_object_from_path(bridge, obj_path);
+   Eldbus_Message *ret;
+   Eina_Bool highlight = EINA_FALSE;
+
+   ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, EFL_ACCESS_COMPONENT_MIXIN, msg);
+
+   eo_do(obj, highlight = elm_interface_atspi_component_highlight_clear());
+
+   ret = eldbus_message_method_return_new(msg);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
+
+   eldbus_message_arguments_append(ret, "b", highlight);
+
+   return ret;
+}
+//
+
 static Eldbus_Message *
 _component_get_alpha(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
index cf4282c..bbf18ba 100644 (file)
@@ -2081,3 +2081,24 @@ elm_object_focus_region_show_mode_get(const Evas_Object *obj)
 {
    return elm_widget_focus_region_show_mode_get(obj);
 }
+
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+EAPI void
+elm_object_accessibility_highlight_set(Evas_Object *obj, Eina_Bool visible)
+{
+   EINA_SAFETY_ON_NULL_RETURN(obj);
+   Evas_Object *win = NULL;
+
+   if (!elm_object_widget_check(obj))
+      return;
+
+   win = elm_object_top_widget_get(obj);
+   if (!win || !efl_isa(win, EFL_UI_WIN_CLASS))
+      return;
+
+   if (!visible && (obj == _elm_win_accessibility_highlight_get(win)))
+      _elm_win_accessibility_highlight_set(win, NULL);
+   else if (visible)
+      _elm_win_accessibility_highlight_set(win, obj);
+}
+//
index 935e6a7..bf3d4f8 100644 (file)
@@ -508,3 +508,23 @@ EAPI void        elm_object_orientation_mode_disabled_set(Evas_Object *obj, Eina
  */
 EAPI Eina_Bool   elm_object_orientation_mode_disabled_get(const Evas_Object *obj);
 
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+/**
+ * Set accessibility highlight on object.
+ *
+ * Accessibility higlight helps visually impaired people to localize elements on
+ * application's user interface. It can be used to point to currently focused
+ * objects, interesting elements in given application context or it can just point
+ * to object that mouse is currently hovering above.
+ *
+ * There can be only one highlighted object per window.
+ *
+ * @param obj The Elementary widget to set accessibility highlight.
+ * @param val EINA_TRUE is object should be highlighted, EINA_FALSE otherwise.
+ *
+ * @tizen_only
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_accessibility_highlight_set(Evas_Object *obj, Eina_Bool val);
+//
index bf983bc..40b226e 100644 (file)
@@ -4095,6 +4095,16 @@ _elm_widget_item_efl_access_state_set_get(Eo *eo_item,
 {
    Efl_Access_State_Set states = 0;
 
+   //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+   Evas_Object *win = elm_widget_top_get(item->widget);
+   if (win && efl_isa(win, EFL_UI_WIN_CLASS))
+     {
+        if (_elm_win_accessibility_highlight_get(win) == item->view)
+          STATE_TYPE_SET(states, ELM_ATSPI_STATE_HIGHLIGHTED);
+     }
+   STATE_TYPE_SET(states, ELM_ATSPI_STATE_HIGHLIGHTABLE);
+   //
+
    STATE_TYPE_SET(states, EFL_ACCESS_STATE_FOCUSABLE);
 
    if (elm_object_item_focus_get(eo_item))
@@ -5350,6 +5360,16 @@ _elm_widget_efl_access_state_set_get(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNU
 
    states = efl_access_state_set_get(efl_super(obj, ELM_WIDGET_CLASS));
 
+   //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+   Evas_Object *win = elm_widget_top_get(obj);
+   if (win && efl_isa(win, EFL_UI_WIN_CLASS))
+     {
+        if (_elm_win_accessibility_highlight_get(win) == obj)
+          STATE_TYPE_SET(states, ELM_ATSPI_STATE_HIGHLIGHTED);
+     }
+   STATE_TYPE_SET(states, ELM_ATSPI_STATE_HIGHLIGHTABLE);
+   //
+
    if (evas_object_visible_get(obj))
      {
         STATE_TYPE_SET(states, EFL_ACCESS_STATE_VISIBLE);
@@ -6007,6 +6027,119 @@ ELM_PART_TEXT_DEFAULT_GET(elm_widget, NULL)
    EFL_OBJECT_OP_FUNC(efl_canvas_object_legacy_ctor, _elm_widget_legacy_ctor), \
    EFL_OBJECT_OP_FUNC(efl_dbg_info_get, _elm_widget_efl_object_dbg_info_get)
 
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+EOLIAN static Eo *
+_elm_widget_efl_access_component_accessible_at_point_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool screen_coords, int x, int y)
+{
+   Eina_List *l, *l2, *children;
+   Eo *child;
+   Evas_Object *stack_item;
+   Eo *compare_obj;
+   int ee_x, ee_y;
+
+   if (screen_coords)
+     {
+        Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
+        if (!ee) return NULL;
+        ecore_evas_geometry_get(ee, &ee_x, &ee_y, NULL, NULL);
+        x -= ee_x;
+        y -= ee_y;
+     }
+
+   children = elm_interface_atspi_accessible_children_get(obj);
+
+   /* Get evas_object stacked at given x,y coordinates starting from top */
+   Eina_List *stack = evas_tree_objects_at_xy_get(evas_object_evas_get(obj), NULL, x, y);
+
+   /* Foreach stacked object starting from top */
+   EINA_LIST_FOREACH(stack, l, stack_item)
+     {
+        /* Foreach at-spi children traverse stack_item evas_objects hierarchy */
+        EINA_LIST_FOREACH(children, l2, child)
+          {
+             /* Compare object used to compare with stacked evas objects */
+             compare_obj = child;
+             /* In case of widget_items compare should be different then elm_widget_ item  object */
+             if (efl_isa(child, ELM_WIDGET_ITEM_CLASS))
+               {
+                  Elm_Widget_Item_Data *id = efl_data_scope_get(child, ELM_WIDGET_ITEM_CLASS);
+                  compare_obj = id->view;
+               }
+             /* In case of access object compare should be 'wrapped' evas_object */
+             if (efl_isa(child, ELM_ACCESS_CLASS))
+               {
+                  Elm_Access_Info *info = _elm_access_info_get(child);
+                  compare_obj = info->part_object;
+               }
+             /* If spacial eo children do not have backing evas_object continue with search */
+             if (!compare_obj)
+               continue;
+
+             Evas_Object *smart_parent = stack_item;
+             while (smart_parent)
+               {
+                   if (smart_parent == compare_obj)
+                     {
+                        eina_list_free(children);
+                        eina_list_free(stack);
+                        return child;
+                     }
+                   smart_parent = evas_object_smart_parent_get(smart_parent);
+               }
+          }
+     }
+
+   eina_list_free(children);
+   eina_list_free(stack);
+   return NULL;
+}
+
+EOLIAN static Eina_Bool
+_elm_widget_item_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Item_Data *sd)
+{
+   Evas_Object *win = elm_widget_top_get(sd->widget);
+   if (win && efl_isa(win, EFL_UI_WIN_CLASS))
+     {
+        _elm_win_accessibility_highlight_set(win, sd->view);
+        elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_HIGHLIGHTED, EINA_TRUE);
+        return EINA_TRUE;
+     }
+   return EINA_FALSE;
+}
+
+EOLIAN static Eina_Bool
+_elm_widget_item_efl_access_component_highlight_clear(Eo *obj, Elm_Widget_Item_Data *sd)
+{
+   Evas_Object *win = elm_widget_top_get(sd->widget);
+   if (win && efl_isa(win, EFL_UI_WIN_CLASS))
+     {
+        if (_elm_win_accessibility_highlight_get(win) != sd->view)
+          return EINA_TRUE;
+
+        _elm_win_accessibility_highlight_set(win, NULL);
+        elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_HIGHLIGHTED, EINA_FALSE);
+        return EINA_TRUE;
+     }
+   return EINA_FALSE;
+}
+
+EOLIAN static Eina_Bool
+_elm_widget_efl_access_component_highlight_grab(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED)
+{
+   elm_object_accessibility_highlight_set(obj, EINA_TRUE);
+   elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_HIGHLIGHTED, EINA_TRUE);
+   return EINA_TRUE;
+}
+
+EOLIAN static Eina_Bool
+_elm_widget_efl_access_component_highlight_clear(Eo *obj, Elm_Widget_Smart_Data *pd EINA_UNUSED)
+{
+   elm_object_accessibility_highlight_set(obj, EINA_FALSE);
+   elm_interface_atspi_accessible_state_changed_signal_emit(obj, ELM_ATSPI_STATE_HIGHLIGHTED, EINA_FALSE);
+   return EINA_TRUE;
+}
+//
+
 #include "elm_widget_item.eo.c"
 #include "elm_widget.eo.c"
 
index b8c093a..a696c9d 100644 (file)
@@ -597,6 +597,11 @@ abstract Elm.Widget (Efl.Canvas.Group, Efl.Access,
       Efl.Access.parent { get; }
       Efl.Access.attributes { get; }
       Efl.Access.Component.focus_grab;
+      //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+      Efl.Access.Component.accessible_at_point_get;
+      Efl.Access.Component.highlight_grab;
+      Efl.Access.Component.highlight_clear;
+      //
       Efl.Ui.Focus.User.focus_manager { get; }
       Efl.Ui.Focus.User.focus_parent { get; }
       Efl.Ui.Focus.Object.focus_geometry { get; }
index b7975a4..1571074 100644 (file)
@@ -549,6 +549,10 @@ void                  _elm_win_focus_highlight_in_theme_update(Evas_Object *obj,
 Evas_Object          *_elm_win_focus_highlight_object_get(Evas_Object *obj);
 void                  _elm_win_focus_auto_show(Evas_Object *obj);
 void                  _elm_win_focus_auto_hide(Evas_Object *obj);
+//TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+void                  _elm_win_accessibility_highlight_set(Evas_Object *win, Evas_Object *obj);
+Evas_Object          *_elm_win_accessibility_highlight_get(Evas_Object *win);
+//
 
 EAPI void             _elm_access_clear(Elm_Access_Info *ac);
 EAPI void             _elm_access_text_set(Elm_Access_Info *ac, int type, const char *text);
index b5321f0..79fbfd8 100644 (file)
@@ -546,5 +546,9 @@ class Elm.Widget.Item(Efl.Object, Efl.Access,
            Efl.Access.Component.alpha { get; }
            Efl.Access.Component.layer { get; }
            Efl.Access.Component.focus_grab;
+           //TIZEN_ONLY(20171108): bring HIGHLIGHT related changes
+           Efl.Access.Component.highlight_grab;
+           Efl.Access.Component.highlight_clear;
+           //
       }
 }