Fix item alignment in Gengrid.

When the item was bigger than the grid it was not being correctly positioned.



SVN revision: 54906
This commit is contained in:
Rafael Fonseca 2010-11-23 20:30:48 +00:00
parent b1846a536c
commit 8fb7daa582
1 changed files with 22 additions and 14 deletions

View File

@ -1022,8 +1022,6 @@ _item_place(Elm_Gengrid_Item *item, Evas_Coord cx, Evas_Coord cy)
item->x = cx;
item->y = cy;
evas_object_geometry_get(item->wd->pan_smart, &ox, &oy, &vw, &vh);
evas_output_viewport_get(evas_object_evas_get(item->wd->self),
&cvx, &cvy, &cvw, &cvh);
/* Preload rows/columns at each side of the Gengrid */
cvx = ox - PRELOAD * item->wd->item_width;
@ -1047,11 +1045,9 @@ _item_place(Elm_Gengrid_Item *item, Evas_Coord cx, Evas_Coord cy)
if (item->wd->count % items_visible)
columns++;
if (item->wd->minw < vw)
{
tcw = item->wd->item_width * columns;
alignw = (vw - tcw) * item->wd->align_x;
}
tcw = item->wd->item_width * columns;
alignw = (vw - tcw) * item->wd->align_x;
items_row = items_visible;
if (items_row > item->wd->count)
items_row = item->wd->count;
@ -1071,11 +1067,9 @@ _item_place(Elm_Gengrid_Item *item, Evas_Coord cx, Evas_Coord cy)
if (item->wd->count % items_visible)
rows++;
if (item->wd->minh < vh)
{
tch = item->wd->item_height * rows;
alignh = (vh - tch) * item->wd->align_y;
}
tch = item->wd->item_height * rows;
alignh = (vh - tch) * item->wd->align_y;
items_col = items_visible;
if (items_col > item->wd->count)
items_col = item->wd->count;
@ -1289,6 +1283,20 @@ _pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
*y = (oh < sd->wd->minh) ? sd->wd->minh - oh : 0;
}
static void
_pan_min_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
{
Pan *sd = evas_object_smart_data_get(obj);
Evas_Coord mx, my;
if (!sd) return;
_pan_max_get(obj, &mx, &my);
if (x)
*x = -mx * sd->wd->align_x;
if (y)
*y = -my * sd->wd->align_y;
}
static void
_pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
@ -1469,8 +1477,8 @@ elm_gengrid_add(Evas_Object *parent)
}
elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart,
_pan_set, _pan_get,
_pan_max_get, _pan_child_size_get);
_pan_set, _pan_get, _pan_max_get,
_pan_min_get, _pan_child_size_get);
return obj;
}