when removing items from ilist, autoresize the ilist if it's in a scroller to prevent item sizes from becoming larger

ticket #1678


SVN revision: 78508
This commit is contained in:
Mike Blumenkrantz 2012-10-26 08:30:24 +00:00
parent ef7cd7af5f
commit 2adbe0567d
1 changed files with 14 additions and 0 deletions

View File

@ -443,6 +443,8 @@ e_ilist_remove_num(Evas_Object *obj, int n)
{
E_Ilist_Item *si = NULL;
Eina_List *item;
int w, h;
Eina_Bool resize = EINA_FALSE;
API_ENTRY return;
if (!sd->items) return;
@ -453,12 +455,24 @@ e_ilist_remove_num(Evas_Object *obj, int n)
sd->items = eina_list_remove_list(sd->items, item);
if (si->selected) sd->selected_items = eina_list_remove(sd->selected_items, si);
evas_object_geometry_get(sd->o_box, NULL, NULL, &w, &h);
if ((sd->w == w) && (sd->h == h))
resize = e_box_item_size_get(si->o_base, &w, &h);
if (sd->selected == n) sd->selected = -1;
if (si->o_icon) evas_object_del(si->o_icon);
if (si->o_end) evas_object_del(si->o_end);
if (si->label) eina_stringshare_del(si->label);
evas_object_del(si->o_base);
E_FREE(si);
/* if ilist size is size of box (e_widget_ilist),
* autoresize here to prevent skewed perspective as in ticket #1678
*/
if (!resize) return;
if (!sd->items) return;
si = eina_list_data_get(sd->items);
evas_object_resize(sd->o_smart, w, eina_list_count(sd->items) * h);
}
EAPI const char *