genlis - create and del as items come into view.
SVN revision: 40588
This commit is contained in:
parent
5c7e2ec144
commit
84e589e5ed
|
@ -749,10 +749,6 @@ extern "C" {
|
||||||
// * when entries are in a scroller and change size, the scroller shows scrollbars. fix. same for selecting. for 1 line entries in a scroller should only have scroll arrow indicators.
|
// * when entries are in a scroller and change size, the scroller shows scrollbars. fix. same for selecting. for 1 line entries in a scroller should only have scroll arrow indicators.
|
||||||
//
|
//
|
||||||
//// (more widgets/features - medium priority)
|
//// (more widgets/features - medium priority)
|
||||||
// * <edje selection + copy & paste fixed so it works with scrolling>
|
|
||||||
// * <evas scale cache>
|
|
||||||
// * <evas shared cache>
|
|
||||||
//
|
|
||||||
// * multiple genlist item styles (multi-label, 1 icon + 2 line label, header etc.)
|
// * multiple genlist item styles (multi-label, 1 icon + 2 line label, header etc.)
|
||||||
// * carousel selector widget
|
// * carousel selector widget
|
||||||
// * auto-size label/text that adapts text size to its allocated region
|
// * auto-size label/text that adapts text size to its allocated region
|
||||||
|
|
|
@ -428,6 +428,8 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
||||||
static void
|
static void
|
||||||
_item_unrealize(Elm_Genlist_Item *it)
|
_item_unrealize(Elm_Genlist_Item *it)
|
||||||
{
|
{
|
||||||
|
Evas_Object *icon;
|
||||||
|
|
||||||
if (!it->realized) return;
|
if (!it->realized) return;
|
||||||
evas_object_del(it->base);
|
evas_object_del(it->base);
|
||||||
it->base = NULL;
|
it->base = NULL;
|
||||||
|
@ -439,9 +441,7 @@ _item_unrealize(Elm_Genlist_Item *it)
|
||||||
it->icons = NULL;
|
it->icons = NULL;
|
||||||
_stringlist_free(it->states);
|
_stringlist_free(it->states);
|
||||||
|
|
||||||
Evas_Object *icon;
|
EINA_LIST_FREE(it->icon_objs, icon) evas_object_del(icon);
|
||||||
EINA_LIST_FREE(it->icon_objs, icon)
|
|
||||||
evas_object_del(icon);
|
|
||||||
|
|
||||||
it->states = NULL;
|
it->states = NULL;
|
||||||
it->realized = 0;
|
it->realized = 0;
|
||||||
|
@ -483,7 +483,7 @@ _item_block_recalc(Item_Block *itb, int in)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_item_block_realize(Item_Block *itb, int in)
|
_item_block_realize(Item_Block *itb, int in, int full)
|
||||||
{
|
{
|
||||||
const Eina_List *l;
|
const Eina_List *l;
|
||||||
Elm_Genlist_Item *it;
|
Elm_Genlist_Item *it;
|
||||||
|
@ -491,7 +491,7 @@ _item_block_realize(Item_Block *itb, int in)
|
||||||
EINA_LIST_FOREACH(itb->items, l, it)
|
EINA_LIST_FOREACH(itb->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->delete_me) continue;
|
if (it->delete_me) continue;
|
||||||
_item_realize(it, in, 0);
|
if (full) _item_realize(it, in, 0);
|
||||||
in++;
|
in++;
|
||||||
}
|
}
|
||||||
itb->realized = 1;
|
itb->realized = 1;
|
||||||
|
@ -512,28 +512,43 @@ _item_block_unrealize(Item_Block *itb)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_item_block_position(Item_Block *itb)
|
_item_block_position(Item_Block *itb, int in)
|
||||||
{
|
{
|
||||||
const Eina_List *l;
|
const Eina_List *l;
|
||||||
Elm_Genlist_Item *it;
|
Elm_Genlist_Item *it;
|
||||||
Evas_Coord y = 0, ox, oy;
|
Evas_Coord y = 0, ox, oy, ow, oh;
|
||||||
|
int vis;
|
||||||
|
|
||||||
evas_object_geometry_get(itb->wd->pan_smart, &ox, &oy, NULL, NULL);
|
evas_object_geometry_get(itb->wd->pan_smart, &ox, &oy, &ow, &oh);
|
||||||
EINA_LIST_FOREACH(itb->items, l, it)
|
EINA_LIST_FOREACH(itb->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->delete_me) continue;
|
if (it->delete_me) continue;
|
||||||
it->x = 0;
|
it->x = 0;
|
||||||
it->y = y;
|
it->y = y;
|
||||||
it->w = itb->w;
|
it->w = itb->w;
|
||||||
|
vis = (ELM_RECTS_INTERSECT(itb->x + it->x - itb->wd->pan_x,
|
||||||
|
itb->y + it->y - itb->wd->pan_y,
|
||||||
|
it->w, it->h,
|
||||||
|
0, 0, ow, oh));
|
||||||
|
if ((itb->realized) && (!it->realized))
|
||||||
|
{
|
||||||
|
if (vis) _item_realize(it, in, 0);
|
||||||
|
}
|
||||||
if (it->realized)
|
if (it->realized)
|
||||||
{
|
{
|
||||||
evas_object_resize(it->base, it->w, it->h);
|
if (vis)
|
||||||
evas_object_move(it->base,
|
{
|
||||||
ox + itb->x + it->x - itb->wd->pan_x,
|
evas_object_resize(it->base, it->w, it->h);
|
||||||
oy + itb->y + it->y - itb->wd->pan_y);
|
evas_object_move(it->base,
|
||||||
evas_object_show(it->base);
|
ox + itb->x + it->x - itb->wd->pan_x,
|
||||||
|
oy + itb->y + it->y - itb->wd->pan_y);
|
||||||
|
evas_object_show(it->base);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_item_unrealize(it);
|
||||||
}
|
}
|
||||||
y += it->h;
|
y += it->h;
|
||||||
|
in++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -617,12 +632,12 @@ static void
|
||||||
_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||||
{
|
{
|
||||||
Pan *sd = evas_object_smart_data_get(obj);
|
Pan *sd = evas_object_smart_data_get(obj);
|
||||||
Evas_Coord ow, oh;
|
// Evas_Coord ow, oh;
|
||||||
evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
|
// evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
|
||||||
ow = sd->wd->minw - ow;
|
// ow = sd->wd->minw - ow;
|
||||||
if (ow < 0) ow = 0;
|
// if (ow < 0) ow = 0;
|
||||||
oh = sd->wd->minh - oh;
|
// oh = sd->wd->minh - oh;
|
||||||
if (oh < 0) oh = 0;
|
// if (oh < 0) oh = 0;
|
||||||
// if (x < 0) x = 0;
|
// if (x < 0) x = 0;
|
||||||
// if (y < 0) y = 0;
|
// if (y < 0) y = 0;
|
||||||
// if (x > ow) x = ow;
|
// if (x > ow) x = ow;
|
||||||
|
@ -717,9 +732,9 @@ _pan_calculate(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
if ((!itb->realized) || (itb->changed))
|
if ((!itb->realized) || (itb->changed))
|
||||||
{
|
{
|
||||||
_item_block_realize(itb, in);
|
_item_block_realize(itb, in, 0);
|
||||||
}
|
}
|
||||||
_item_block_position(itb);
|
_item_block_position(itb, in);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1427,7 +1442,7 @@ elm_genlist_item_update(Elm_Genlist_Item *it)
|
||||||
_item_unrealize(it);
|
_item_unrealize(it);
|
||||||
_item_realize(it, num, 0);
|
_item_realize(it, num, 0);
|
||||||
_item_block_recalc(it->block, numb);
|
_item_block_recalc(it->block, numb);
|
||||||
_item_block_position(it->block);
|
_item_block_position(it->block, num);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue