From: Daniel Juyung Seo Date: Thu, 2 Jun 2011 08:36:40 +0000 (+0900) Subject: [genlist] Fixed size issue when _changed_job() is called. X-Git-Tag: REL_I9200_20110603-1~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=266386e3ea4b07db3f83656fdcadcf2ac998f8f3;p=framework%2Fuifw%2Felementary.git [genlist] Fixed size issue when _changed_job() is called. Change-Id: Iaf6ddb5bf7559ba4a6de0ba57079ada0cefec1dd --- diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index a319095..0b8c410 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -2774,7 +2774,8 @@ _changed_job(void *data) { Widget_Data *wd = data; Eina_List *l2; Item_Block *itb; - int num, num0, position = 0, recalc = 0; + int num, num0, position = 0; + Eina_Bool width_changed = EINA_FALSE, height_changed = EINA_FALSE; if (!wd) return; wd->changed_job = NULL; num = 0; @@ -2791,7 +2792,7 @@ _changed_job(void *data) continue; } num0 = num; - recalc = 0; + width_changed = height_changed = EINA_FALSE; EINA_LIST_FOREACH(itb->items, l2, it) { if ((!it->mincalcd) && (it->realized)) @@ -2812,19 +2813,39 @@ _changed_job(void *data) it->mincalcd = EINA_TRUE; //if ((it->minw != itminw) || (it->minh != itminh)) + //if ((it->minh != itminh)) + // recalc = 1; + if ((it->minw != itminw)) + width_changed = EINA_TRUE; if ((it->minh != itminh)) - recalc = 1; + height_changed = EINA_TRUE; + + if ((!it->wd->group_item_width) && (it->flags == ELM_GENLIST_ITEM_GROUP)) + { + it->wd->group_item_width = mw; + it->wd->group_item_height = mh; + } + else if ((!it->wd->item_width) && (it->flags == ELM_GENLIST_ITEM_NONE)) + { + it->wd->item_width = mw; + it->wd->item_height = mh; + } } num++; } itb->updateme = EINA_FALSE; - if (recalc) + // TODO: why this is separated. + if (height_changed) { position = 1; itb->changed = EINA_TRUE; _item_block_recalc(itb, num0, 0, 1); _item_block_position(itb, num0); } + else if (width_changed) + { + _item_block_position(itb, num0); + } } if (position) {