genlist: recalc item size after item content field updated
authorSangHyeon Lee <sh10233.lee@samsung.com>
Tue, 19 Apr 2016 05:57:41 +0000 (14:57 +0900)
committerSangHyeon Lee <sh10233.lee@samsung.com>
Tue, 19 Apr 2016 05:57:45 +0000 (14:57 +0900)
Summary :
after item content fields updated, item and block should be
recalculated about it's height because content size can be updated.
if do not recaculate, items can be overlapped.

@fix

src/lib/elementary/elm_genlist.c

index 1e8ec97507405e41f3ac3b4e97674c45dcfeb0b9..eccb493e8195486c432919992e21d5f597c98004 100644 (file)
@@ -7083,8 +7083,9 @@ _elm_genlist_item_fields_update(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it,
                                    &GL_IT(it)->deco_all_contents,
                                    "contents", parts);
           }
-        if (it->has_contents != (!!it->contents))
-          it->item->mincalcd = EINA_FALSE;
+        //forcely recalc about item because even same content, size can be changed.
+        it->item->mincalcd = EINA_FALSE;
+        it->item->block->must_recalc = EINA_TRUE;
         it->has_contents = !!it->contents;
         if (it->item->type == ELM_GENLIST_ITEM_NONE)
           {
@@ -7101,7 +7102,10 @@ _elm_genlist_item_fields_update(Eo *eo_item EINA_UNUSED, Elm_Gen_Item *it,
      _item_state_realize(it, VIEW(it), parts);
 
    if (!it->item->mincalcd)
-     elm_genlist_item_update(eo_item);
+     {
+        ELM_SAFE_FREE(it->item->wsd->calc_job, ecore_job_del);
+        it->item->wsd->calc_job = ecore_job_add(_calc_job, it->item->wsd->obj);
+     }
 }
 
 EOLIAN static void