[atspi][elm_gengrid] Fix for wrong item gets activate action in horizontal case 38/90538/3
authorPrasoon Singh <prasoon.16@samsung.com>
Fri, 30 Sep 2016 11:17:34 +0000 (16:47 +0530)
committerPrasoon Singh <prasoon.16@samsung.com>
Mon, 3 Oct 2016 12:05:33 +0000 (05:05 -0700)
Change-Id: I9daa1c4d41c3c62f867ff26d60bd3806d27e7e44

src/lib/elm_gengrid.c

index 900096343713cee4a5e75a69f2c9271632cdf606..792531b39c584d9db7bbc5f79bb8ed42f29e71ab 100644 (file)
@@ -6015,14 +6015,35 @@ EOLIAN Eina_Bool
 _elm_gengrid_elm_interface_atspi_selection_child_select(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
 {
    Elm_Gen_Item *item;
+   //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
+   Eo *eo_item;
+   Eina_List *l;
+   //
+
    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
      {
-        EINA_INLIST_FOREACH(pd->items, item)
+        //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
+        if (pd->horizontal)
           {
-             if (child_index-- == 0)
+             EINA_LIST_FOREACH(pd->atspi_children, l, eo_item)
                {
-                  elm_gengrid_item_selected_set(EO_OBJ(item), EINA_TRUE);
-                  return EINA_TRUE;
+                  if (child_index-- == 0)
+                    {
+                       elm_gengrid_item_selected_set(eo_item, EINA_TRUE);
+                       return EINA_TRUE;
+                    }
+               }
+          }
+        //
+        else
+          {
+             EINA_INLIST_FOREACH(pd->items, item)
+               {
+                  if (child_index-- == 0)
+                    {
+                       elm_gengrid_item_selected_set(EO_OBJ(item), EINA_TRUE);
+                       return EINA_TRUE;
+                    }
                }
           }
      }
@@ -6050,12 +6071,27 @@ EOLIAN Eina_Bool
 _elm_gengrid_elm_interface_atspi_selection_is_child_selected(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
 {
    Elm_Gen_Item *item;
+   //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
+   Eo *eo_item;
+   Eina_List *l;
 
-   EINA_INLIST_FOREACH(pd->items, item)
+   if (pd->horizontal)
      {
-        if (child_index-- == 0)
+        EINA_LIST_FOREACH(pd->atspi_children, l, eo_item)
           {
-             return elm_gengrid_item_selected_get(EO_OBJ(item));
+             if (child_index-- == 0)
+               return elm_gengrid_item_selected_get(eo_item);
+          }
+     }
+   //
+   else
+     {
+        EINA_INLIST_FOREACH(pd->items, item)
+          {
+             if (child_index-- == 0)
+               {
+                  return elm_gengrid_item_selected_get(EO_OBJ(item));
+               }
           }
      }
    return EINA_FALSE;
@@ -6085,14 +6121,35 @@ EOLIAN Eina_Bool
 _elm_gengrid_elm_interface_atspi_selection_child_deselect(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *pd, int child_index)
 {
    Elm_Gen_Item *item;
+   //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
+   Eo *eo_item;
+   Eina_List *l;
+   //
+
    if (pd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
      {
-        EINA_INLIST_FOREACH(pd->items, item)
+        //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
+        if (pd->horizontal)
           {
-             if (child_index-- == 0)
+             EINA_LIST_FOREACH(pd->atspi_children, l, eo_item)
                {
-                  elm_gengrid_item_selected_set(EO_OBJ(item), EINA_FALSE);
-                  return EINA_TRUE;
+                  if (child_index-- == 0)
+                    {
+                       elm_gengrid_item_selected_set(eo_item, EINA_FALSE);
+                       return EINA_TRUE;
+                    }
+               }
+          }
+        //
+        else
+          {
+             EINA_INLIST_FOREACH(pd->items, item)
+               {
+                  if (child_index-- == 0)
+                    {
+                       elm_gengrid_item_selected_set(EO_OBJ(item), EINA_FALSE);
+                       return EINA_TRUE;
+                    }
                }
           }
      }