[atspi][elm_genlist] Moving changes to mobile_lib 31/90631/6
authorPrasoon Singh <prasoon.16@samsung.com>
Mon, 3 Oct 2016 09:03:41 +0000 (14:33 +0530)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 4 Oct 2016 08:17:54 +0000 (01:17 -0700)
Change-Id: Ic93230d93cce685c26a7ba1dcb25ca9391c705a0

src/mobile_lib/elm_genlist.c
src/mobile_lib/elm_genlist.eo

index 1bf3e91..1808cb2 100644 (file)
@@ -745,9 +745,6 @@ _item_content_realize(Elm_Gen_Item *it,
                    ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key);
              if (ic)
                {
-                  if (_elm_config->atspi_mode && eo_isa(ic, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
-                    eo_do(ic, elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));
-
                   // TIZEN_ONLY(20150630): Add contents min height calculation for "full" style
                   if (eo_class_get(ic) == ELM_LAYOUT_CLASS)
                     {
@@ -1102,6 +1099,13 @@ _item_unrealize(Elm_Gen_Item *it,
         evas_object_smart_callback_call(WIDGET(it), SIG_UNREALIZED, EO_OBJ(it));
         _elm_access_widget_item_unregister(it->base);
         elm_object_item_access_order_unset(EO_OBJ(it));
+        //TIZEN_ONLY(20150709) Do not register children of MANAGES_DESCENDATS objects
+        if (_elm_config->atspi_mode)
+          {
+             elm_interface_atspi_accessible_removed(EO_OBJ(it));
+             elm_interface_atspi_accessible_children_changed_del_signal_emit(GL_IT(it)->wsd->obj, EO_OBJ(it));
+          }
+        //
      }
 
    Eina_List *l;
@@ -1631,7 +1635,10 @@ _item_realize(Elm_Gen_Item *it,
 
         //TIZEN_ONLY(20150709) Do not register children of MANAGES_DESCENDATS objects
         if (_elm_config->atspi_mode)
-          elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it));
+          {
+             elm_interface_atspi_accessible_added(EO_OBJ(it));
+             elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it));
+          }
         //
 
         // Register accessibility before realized callback
@@ -5571,6 +5578,53 @@ _elm_genlist_evas_object_smart_add(Eo *obj, Elm_Genlist_Data *priv)
                (NULL, NULL, &priv->viewport_w, &priv->viewport_h));
 }
 
+//TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off,
+//register/unregister access objects accordingly.
+EOLIAN static void
+_elm_genlist_elm_widget_atspi(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, Eina_Bool is_atspi)
+{
+   Item_Block *itb;
+   Eina_Bool done = EINA_FALSE;
+   Evas_Object *content = NULL;
+   Eina_List *l;
+
+   EINA_INLIST_FOREACH(sd->blocks, itb)
+     {
+        if (itb->realized)
+          {
+             Eina_List *l;
+             Elm_Gen_Item *it;
+
+             done = EINA_TRUE;
+             EINA_LIST_FOREACH(itb->items, l, it)
+               {
+                  if (!it->realized || it->hide) continue;
+                  if (is_atspi)
+                    {
+                       elm_interface_atspi_accessible_added(EO_OBJ(it));
+                       elm_interface_atspi_accessible_children_changed_added_signal_emit(sd->obj, EO_OBJ(it));
+                       EINA_LIST_FOREACH(it->contents, l, content)
+                         {
+                            if (eo_isa(content, ELM_INTERFACE_ATSPI_ACCESSIBLE_MIXIN))
+                              {
+                                 eo_do(content, elm_interface_atspi_accessible_parent_set(EO_OBJ(it)));
+                                 elm_interface_atspi_accessible_children_changed_added_signal_emit(EO_OBJ(it), content);
+                              }
+                         }
+                       elm_interface_atspi_accessible_name_changed_signal_emit(EO_OBJ(it));
+                    }
+                  else
+                    {
+                       elm_interface_atspi_accessible_removed(EO_OBJ(it));
+                       elm_interface_atspi_accessible_children_changed_del_signal_emit(sd->obj, EO_OBJ(it));
+                    }
+               }
+          }
+        else if (done) break;
+     }
+}
+//
+
 EAPI Evas_Object *
 elm_genlist_add(Evas_Object *parent)
 {
index f3c1b64..61c560a 100644 (file)
@@ -39,6 +39,10 @@ class Elm.Genlist (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interfac
 // TIZEN only (20150914) : Accessibility: updated highlight change during genlist and list scroll
       Elm_Interface_Scrollable.content_pos_set;
 // TIZEN only (20150914)
+      //TIZEN_ONLY(20160822): When atspi mode is dynamically switched on/off,
+      //register/unregister access objects accordingly.
+      Elm.Widget.atspi;
+      //
    }
    events {
       language,changed;