[atspi] clear highlight of an object, if the can_highlight value of object or its...
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 25 Nov 2016 13:10:02 +0000 (22:10 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Tue, 29 Nov 2016 12:32:36 +0000 (21:32 +0900)
Change-Id: If744b74937972ebc3790a594bfa736055210ff69

src/lib/elm_widget.c

index 5db245a6bd9989b4a23bce57df60b7003f952bd2..6f8b16e661b1239d65b78796ada3899581a705fa 100644 (file)
@@ -6893,28 +6893,51 @@ _elm_widget_item_elm_interface_atspi_accessible_translation_domain_get(Eo *obj E
 }
 
 //TIZEN_ONLY(20160726): add API elm_atspi_accessible_can_highlight_set/get
+static Eina_Bool
+_children_highlight_check(Eo *obj)
+{
+   Eina_List *children, *l;
+   Eo *child;
+
+   if (_elm_object_accessibility_currently_highlighted_get() == (void *)obj)
+     {
+        eo_do(obj, elm_interface_atspi_component_highlight_clear());
+        return EINA_TRUE;
+     }
+
+   eo_do(obj, children = elm_interface_atspi_accessible_children_get());
+   EINA_LIST_FOREACH(children, l, child)
+     {
+        if (_children_highlight_check(child)) return EINA_TRUE;
+     }
+
+   return EINA_FALSE;
+}
+
 EOLIAN static void
 _elm_widget_elm_interface_atspi_accessible_can_highlight_set(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd, Eina_Bool can_highlight)
 {
+   if (!can_highlight) _children_highlight_check(obj);
    _pd->can_highlight = !!can_highlight;
 }
 
 EOLIAN static Eina_Bool
-_elm_widget_elm_interface_atspi_accessible_can_highlight_get(Eo *obj EINA_UNUSED, Elm_Widget_Smart_Data *_pd)
+_elm_widget_elm_interface_atspi_accessible_can_highlight_get(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED)
 {
-   return _pd->can_highlight;
+   return _elm_widget_highlightable(obj);
 }
 
 EOLIAN static void
 _elm_widget_item_elm_interface_atspi_accessible_can_highlight_set(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd, Eina_Bool can_highlight)
 {
+   if (!can_highlight) _children_highlight_check(obj);
    _pd->can_highlight = !!can_highlight;
 }
 
 EOLIAN static Eina_Bool
-_elm_widget_item_elm_interface_atspi_accessible_can_highlight_get(Eo *obj EINA_UNUSED, Elm_Widget_Item_Data *_pd)
+_elm_widget_item_elm_interface_atspi_accessible_can_highlight_get(Eo *obj, Elm_Widget_Item_Data *_pd EINA_UNUSED)
 {
-   return _pd->can_highlight;
+   return _elm_widget_item_highlightable(obj);
 }
 //