From: Tae-Hwan Kim Date: Tue, 2 Apr 2013 12:19:08 +0000 (+0900) Subject: [Genlist] Fix compress mode X-Git-Tag: 2.1b_release~69 X-Git-Url: http://review.tizen.org/git/?p=framework%2Fuifw%2Felementary.git;a=commitdiff_plain;h=5cd8c83e1317355b299608b7e1dad4d52fe4ff8d [Genlist] Fix compress mode If compress mode is used, viewport width should be used for calculating item's width. So before edje caculates it's height & width, minimum restricted width should be given to caculate correct height of item because edje should know it's width of textblock to caculate it's height of textblock. (textblock can have multiline texts) After edje min calc, if width exceeds the viewport width, set width same as viewport width to compress item. Change-Id: Ibe225a2e315320dd011972f73663b471af4a7781 --- diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index f25f0b9..5b8694b 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -1715,10 +1715,16 @@ _item_realize(Elm_Gen_Item *it, if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) elm_coords_finger_size_adjust(1, &mw, 1, &mh); - if (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS && - GL_IT(it)->wsd->prev_viewport_w != 0) - mw = GL_IT(it)->wsd->prev_viewport_w; + if ((GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS) && + (GL_IT(it)->wsd->prev_viewport_w != 0) && + (mw < GL_IT(it)->wsd->prev_viewport_w)) + mw = GL_IT(it)->wsd->prev_viewport_w; edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh); + if ((GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS) && + (GL_IT(it)->wsd->prev_viewport_w != 0) && + (mw > GL_IT(it)->wsd->prev_viewport_w)) + mw = GL_IT(it)->wsd->prev_viewport_w; + it->item->w = it->item->minw = mw; it->item->h = it->item->minh = mh; @@ -2114,17 +2120,22 @@ _changed_job(Elm_Genlist_Smart_Data *sd) if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) elm_coords_finger_size_adjust(1, &mw, 1, &mh); - if (GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS && - GL_IT(it)->wsd->prev_viewport_w != 0) - mw = sd->prev_viewport_w; + if ((GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS) && + (GL_IT(it)->wsd->prev_viewport_w != 0) && + (mw < GL_IT(it)->wsd->prev_viewport_w)) + mw = GL_IT(it)->wsd->prev_viewport_w; edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh); + if ((GL_IT(it)->wsd->mode == ELM_LIST_COMPRESS) && + (GL_IT(it)->wsd->prev_viewport_w != 0) && + (mw > GL_IT(it)->wsd->prev_viewport_w)) + mw = GL_IT(it)->wsd->prev_viewport_w; - if (it->item->w != mw) + if (it->item->minw != mw) { it->item->w = it->item->minw = mw; width_changed = EINA_TRUE; } - if (it->item->h != mh) + if (it->item->minh != mh) { it->item->h = it->item->minh = mh; height_changed = EINA_TRUE;