Don't calculate size on every append, just calculate when e_widget_ilist_go

is called. This speeds up widget_ilist drastically, especially when adding a
lot of items and does not appear to have any adverse effects. Tested with
all code that is using e_widget_ilist.


SVN revision: 21378
This commit is contained in:
Christopher Michael 2006-03-18 17:00:27 +00:00
parent 575ac23a71
commit f5c6d2b012
1 changed files with 16 additions and 16 deletions

View File

@ -65,7 +65,6 @@ EAPI void
e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*func) (void *data), void *data, char *val)
{
E_Widget_Data *wd;
Evas_Coord mw, mh, vw, vh, w, h;
E_Widget_Callback *wcb;
wd = e_widget_data_get(obj);
@ -76,21 +75,6 @@ e_widget_ilist_append(Evas_Object *obj, Evas_Object *icon, char *label, void (*f
wd->callbacks = evas_list_append(wd->callbacks, wcb);
e_ilist_append(wd->o_ilist, icon, label, _e_wid_cb_item_sel, _e_wid_cb_item_hilight, wd, wcb);
if (icon) evas_object_show(icon);
e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
evas_object_resize(wd->o_ilist, mw, mh);
e_scrollframe_child_viewport_size_get(wd->o_scrollframe, &vw, &vh);
evas_object_geometry_get(wd->o_scrollframe, NULL, NULL, &w, &h);
if (mw > vw)
{
Evas_Coord wmw, wmh;
e_widget_min_size_get(obj, &wmw, &wmh);
e_widget_min_size_set(obj, mw + (w - vw), wmh);
}
else if (mw < vw)
{
evas_object_resize(wd->o_ilist, vw,mh);
}
}
EAPI void
@ -133,9 +117,25 @@ EAPI void
e_widget_ilist_go(Evas_Object *obj)
{
E_Widget_Data *wd;
Evas_Coord mw, mh, vw, vh, w, h;
wd = e_widget_data_get(obj);
wd->o_widget = obj;
e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
evas_object_resize(wd->o_ilist, mw, mh);
e_scrollframe_child_viewport_size_get(wd->o_scrollframe, &vw, &vh);
evas_object_geometry_get(wd->o_scrollframe, NULL, NULL, &w, &h);
if (mw > vw)
{
Evas_Coord wmw, wmh;
e_widget_min_size_get(obj, &wmw, &wmh);
e_widget_min_size_set(obj, mw + (w - vw), wmh);
}
else if (mw < vw)
{
evas_object_resize(wd->o_ilist, vw,mh);
}
}
EAPI void