elm: [atspi]check if highlighted object's parent hidden
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 8 Dec 2017 10:37:33 +0000 (16:07 +0530)
committerJiyoun Park <jy0703.park@samsung.com>
Thu, 21 Dec 2017 12:22:58 +0000 (21:22 +0900)
If an object is content of a layout (parent), and user calls
evas_object_hide for the layout, then the _elm_widget_evas_object_smart_hide
for the object (child) is not called. So it is not possible to know
object's changed state on the AT-client side.

 This patch set will check parents of highlighted object in
_elm_widget_evas_object_smart_hide, and emit state changed
signal if one of parents is equal to the hiding object.

@tizen_fix

orignal patch: afcec90361769e19f6d6dc005aa35daeaa74b8ec

Change-Id: I45d7d71c96e1a2645c93f2d1012067f880d6a99d

src/lib/elementary/elm_widget.c

index 9d2541d..19013bb 100644 (file)
@@ -891,6 +891,25 @@ _elm_widget_efl_gfx_visible_set(Eo *obj, Elm_Widget_Smart_Data *pd, Eina_Bool vi
      }
    else
      {
+        //TIZEN_ONLY(20161223) check if the parent of highlighted object is hide
+        Eo *highlighted_obj;
+        highlighted_obj = _elm_object_accessibility_currently_highlighted_get();
+        if (highlighted_obj && highlighted_obj != obj)
+          {
+             Eo *parent;
+             parent = efl_access_parent_get(highlighted_obj);
+             while (parent)
+               {
+                  if (parent == obj)
+                    {
+                       efl_access_state_changed_signal_emit(highlighted_obj, EFL_ACCESS_STATE_SHOWING, EINA_FALSE);
+                       efl_access_component_highlight_clear(highlighted_obj);
+                       break;
+                    }
+                  parent = efl_access_parent_get(parent);
+               }
+          }
+        //
         efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_SHOWING, EINA_FALSE);
      }
 }