gengrid : refactoring gengrid index position
authorSangHyeon Lee <sh10233.lee@samsung.com>
Mon, 14 Nov 2016 04:06:38 +0000 (13:06 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 17 Nov 2016 08:07:49 +0000 (17:07 +0900)
Change-Id: Icb6c996249cfd140f3669ec8749bdba85ca1596c
Signed-off-by: SangHyeon Lee <sh10233.lee@samsung.com>
src/lib/elm_gengrid.c
src/lib/elm_widget_gengrid.h

index 99e3c3f7e39701c290cdba131871954dab1b47a8..66a6212875c6d982dd8c064750e255e0b109328e 100644 (file)
@@ -425,6 +425,14 @@ _calc(void *data)
    if (sd->calc_done) return;
    //
 
+   //TIZEN_ONLY(20161111) : Item index and position refactoring.
+   if (sd->position_update)
+     {
+        _item_position_update(sd->items, 1);
+        sd->position_update = EINA_FALSE;
+     }
+   //
+
    sd->items_lost = 0;
 
    evas_object_geometry_get(sd->pan_obj, NULL, NULL, &cvw, &cvh);
@@ -3957,6 +3965,8 @@ _elm_gengrid_item_del_serious(Elm_Gen_Item *it)
      sd->group_items = eina_list_remove(sd->group_items, it);
 
    ELM_SAFE_FREE(sd->state, eina_inlist_sorted_state_free);
+   //TIZEN_ONLY(20161111) : Item index and position refactoring.
+   sd->position_update = EINA_TRUE;
    //TIZEN_ONLY(20160511) : Remove job for fixing calculate timing issue.
    sd->calc_done = EINA_FALSE;
    evas_object_smart_changed(sd->pan_obj);
@@ -4647,7 +4657,7 @@ _elm_gengrid_item_prepend(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd, const Elm_G
    if (!it) return NULL;
 
    sd->items = eina_inlist_prepend(sd->items, EINA_INLIST_GET(it));
-   _item_position_update(sd->items, 1);
+   sd->position_update = EINA_TRUE;
 
    if (it->group)
      sd->group_items = eina_list_append(sd->group_items, it);
@@ -4743,7 +4753,7 @@ _elm_gengrid_item_sorted_insert(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd, const
    sd->item_compare_cb = comp;
    sd->items = eina_inlist_sorted_state_insert
        (sd->items, EINA_INLIST_GET(it), _elm_gengrid_item_compare, sd->state);
-   _item_position_update(sd->items, 0);
+   _item_position_update(sd->items, 1);
 
    //TIZEN_ONLY(20160511) : Remove job for fixing calculate timing issue.
    sd->calc_done = EINA_FALSE;
@@ -5649,8 +5659,18 @@ _elm_gengrid_highlight_mode_get(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *sd)
 EOLIAN static int
 _elm_gengrid_item_index_get(Eo *eo_it EINA_UNUSED, Elm_Gen_Item *it)
 {
+   //TIZEN_ONLY(20161111) : Item index and position refactoring.
+   int cnt = 1;
+   Elm_Gen_Item *tmp;
    ELM_GENGRID_ITEM_CHECK_OR_RETURN(it, -1);
 
+   EINA_INLIST_FOREACH(GG_IT(it)->wsd->items, tmp)
+    {
+       if (tmp == it) break;
+       cnt++;
+    }
+   it->position = cnt;
+   //
    return it->position;
 }
 
index e1579c70c48c1b1406b3bb8c37bd786c9b2ae5af..3ef06432c021021976e729151a8825dc53cce97a 100644 (file)
@@ -144,6 +144,7 @@ struct _Elm_Gengrid_Data
    Elm_Gen_Item                         *atspi_item_to_highlight;
    //TIZEN_ONLY (20160914) : Accessibility: sort children list according to their x,y position
    Eina_List                            *atspi_children;
+   Eina_Bool                             position_update;
    //
 };