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; int count;
evas_object_geometry_get(wd->pan_smart, NULL, NULL, &cvw, &cvh); evas_object_geometry_get(wd->pan_smart, NULL, NULL, &cvw, &cvh);
if ((wd->horizontal) && (wd->item_height > 0)) if ((cvw != 0) || (cvh != 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)
{ {
minw = ceil(count / (float)nmax) * wd->item_width; if ((wd->horizontal) && (wd->item_height > 0))
minh = nmax * wd->item_height; nmax = cvh / wd->item_height;
} else if (wd->item_width > 0)
else nmax = cvw / wd->item_width;
{
minw = nmax * wd->item_width;
minh = ceil(count / (float)nmax) * wd->item_height;
}
if ((minw != wd->minw) || (minh != wd->minh)) if (nmax < 1)
{ nmax = 1;
wd->minh = minh;
wd->minw = minw;
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
}
wd->nmax = nmax; count = wd->count;
wd->calc_job = NULL; if (wd->horizontal)
evas_object_smart_changed(wd->pan_smart); {
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 static void