elementary/gengrid - fixed a bug by jh0506.yun@samsung.com

Hello.

I attached the modified patch about calc_job problem.

When I tested gengrid, sometimes gengrid renderd two times in different
shape in a moment.
So I checked gengrid code, I found cause in calc_job function.

calc_job added to ecore job after elm_gengrid_item_size_set and
elm_gengrid_item_append(,prepend,insert_before,insert_after) and etc.
Sometimes pan_smart's cvw and cvh is 0 at this time.

I think, No need to calc_job when pan_smart's cvw and cvh is 0.

Please check about this patch.

Thanks.



SVN revision: 57491
This commit is contained in:
ChunEon Park 2011-03-03 13:01:39 +00:00
parent 51e1a9bba0
commit f522b7385c
1 changed files with 30 additions and 27 deletions

View File

@ -1281,36 +1281,39 @@ _calc_job(void *data)
int count;
evas_object_geometry_get(wd->pan_smart, NULL, NULL, &cvw, &cvh);
if ((wd->horizontal) && (wd->item_height > 0))
nmax = cvh / wd->item_height;
else if (wd->item_width > 0)
nmax = cvw / wd->item_width;
if (nmax < 1)
nmax = 1;
count = wd->count;
if (wd->horizontal)
if ((cvw != 0) || (cvh != 0))
{
minw = ceil(count / (float)nmax) * wd->item_width;
minh = nmax * wd->item_height;
}
else
{
minw = nmax * wd->item_width;
minh = ceil(count / (float)nmax) * wd->item_height;
}
if ((wd->horizontal) && (wd->item_height > 0))
nmax = cvh / wd->item_height;
else if (wd->item_width > 0)
nmax = cvw / wd->item_width;
if ((minw != wd->minw) || (minh != wd->minh))
{
wd->minh = minh;
wd->minw = minw;
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
}
if (nmax < 1)
nmax = 1;
wd->nmax = nmax;
wd->calc_job = NULL;
evas_object_smart_changed(wd->pan_smart);
count = wd->count;
if (wd->horizontal)
{
minw = ceil(count / (float)nmax) * wd->item_width;
minh = nmax * wd->item_height;
}
else
{
minw = nmax * wd->item_width;
minh = ceil(count / (float)nmax) * wd->item_height;
}
if ((minw != wd->minw) || (minh != wd->minh))
{
wd->minh = minh;
wd->minw = minw;
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
}
wd->nmax = nmax;
wd->calc_job = NULL;
evas_object_smart_changed(wd->pan_smart);
}
}
static void