From 1b4d0f49cd3cb5a5f19a6c9df3358daef81e2b17 Mon Sep 17 00:00:00 2001 From: Michael BOUCHAUD Date: Fri, 26 Aug 2011 13:54:12 +0000 Subject: [PATCH] elementary: slideshow fix cache build SVN revision: 62859 --- src/lib/elm_slideshow.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/lib/elm_slideshow.c b/src/lib/elm_slideshow.c index 4d28296..ed02411 100644 --- a/src/lib/elm_slideshow.c +++ b/src/lib/elm_slideshow.c @@ -197,7 +197,7 @@ _item_realize(Elm_Slideshow_Item *item) Elm_Slideshow_Item *_item_prev, *_item_next; Evas_Object *obj = item->base.widget; Widget_Data *wd = elm_widget_data_get(obj); - int ac, bc, lc; + int ac, bc, lc, ic = 0; if (!wd) return; if ((!item->base.view) && (item->itc->func.get)) @@ -230,6 +230,7 @@ _item_realize(Elm_Slideshow_Item *item) && (!_item_next->base.view) && (_item_next->itc->func.get)) { + ic++; _item_next->base.view = _item_next->itc->func.get( (void*)_item_next->base.data, obj); @@ -240,9 +241,12 @@ _item_realize(Elm_Slideshow_Item *item) evas_object_hide(_item_next->base.view); } else if (_item_next && _item_next->l_built) - wd->items_built = - eina_list_demote_list(wd->items_built, + { + ic++; + wd->items_built = + eina_list_demote_list(wd->items_built, _item_next->l_built); + } } } @@ -257,6 +261,7 @@ _item_realize(Elm_Slideshow_Item *item) && (!_item_prev->base.view) && (_item_prev->itc->func.get)) { + ic++; _item_prev->base.view = _item_prev->itc->func.get( (void*)_item_prev->base.data, obj); @@ -267,15 +272,18 @@ _item_realize(Elm_Slideshow_Item *item) evas_object_hide(_item_prev->base.view); } else if (_item_prev && _item_prev->l_built) - wd->items_built = - eina_list_demote_list(wd->items_built, + { + ic++; + wd->items_built = + eina_list_demote_list(wd->items_built, _item_prev->l_built); + } } } } //delete unused items - lc = wd->count_item_pre_before + wd->count_item_pre_after + 1; + lc = ic + 1; while ((int)eina_list_count(wd->items_built) > lc) { item = eina_list_data_get(wd->items_built); @@ -643,12 +651,18 @@ elm_slideshow_item_del(Elm_Slideshow_Item *item) if (wd->previous == item) wd->previous = NULL; if (wd->current == item) { + Elm_Slideshow_Item *p = NULL; Eina_List *l = eina_list_data_find_list(wd->items, item); Eina_List *l2 = eina_list_next(l); wd->current = NULL; if (!l2) - l2 = eina_list_nth_list(wd->items, eina_list_count(wd->items) - 1); - if (l2) + { + l2 = eina_list_prev(l); + if (l2) + elm_slideshow_show(eina_list_data_get(l2)); + + } + else elm_slideshow_show(eina_list_data_get(l2)); } -- 2.7.4