From f301146b55e576cc5d48609c4340877dbcfd99c5 Mon Sep 17 00:00:00 2001 From: seoz Date: Thu, 14 Apr 2011 11:41:07 +0000 Subject: [PATCH] Elementary genlist: Do not call "realized"/"unrealized" smart callbacks if those are internal size calculation purpose. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@58660 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/elm_genlist.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 7a9bb91..96d19cc 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -430,7 +430,7 @@ static void _theme_hook(Evas_Object *obj); static void _show_region_hook(void *data, Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); -static void _item_unrealize(Elm_Genlist_Item *it); +static void _item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc); static void _item_block_unrealize(Item_Block *itb); static void _calc_job(void *data); static void _on_focus_hook(void *data, @@ -916,7 +916,7 @@ _item_del(Elm_Genlist_Item *it) it->wd->walking -= it->walking; if (it->wd->show_item == it) it->wd->show_item = NULL; if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it); - if (it->realized) _item_unrealize(it); + if (it->realized) _item_unrealize(it, EINA_FALSE); if (it->block) _item_block_del(it); if ((!it->delete_me) && (it->itc->func.del)) it->itc->func.del((void *)it->base.data, it->base.widget); @@ -1410,7 +1410,7 @@ _mouse_up(void *data, { if (it->want_unrealize) { - _item_unrealize(it); + _item_unrealize(it, EINA_FALSE); if (it->block->want_unrealize) _item_block_unrealize(it->block); } @@ -1878,16 +1878,16 @@ _item_realize(Elm_Genlist_Item *it, it->want_unrealize = EINA_FALSE; if (itc) _item_cache_free(itc); - evas_object_smart_callback_call(it->base.widget, "realized", it); + if (!calc) evas_object_smart_callback_call(it->base.widget, "realized", it); } static void -_item_unrealize(Elm_Genlist_Item *it) +_item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc) { Evas_Object *icon; if (!it->realized) return; - evas_object_smart_callback_call(it->base.widget, "unrealized", it); + if (!calc) evas_object_smart_callback_call(it->base.widget, "unrealized", it); if (it->long_timer) { ecore_timer_del(it->long_timer); @@ -1944,13 +1944,13 @@ _item_block_recalc(Item_Block *itb, if (changed) { _item_realize(it, in, EINA_TRUE); - _item_unrealize(it); + _item_unrealize(it, EINA_TRUE); } } else { _item_realize(it, in, EINA_TRUE); - _item_unrealize(it); + _item_unrealize(it, EINA_TRUE); } } else @@ -2007,7 +2007,7 @@ _item_block_unrealize(Item_Block *itb) it->want_unrealize = EINA_TRUE; } else - _item_unrealize(it); + _item_unrealize(it, EINA_FALSE); } } if (!dragging) @@ -2069,7 +2069,7 @@ _item_block_position(Item_Block *itb, } else { - if (!it->dragging) _item_unrealize(it); + if (!it->dragging) _item_unrealize(it, EINA_FALSE); } } in++; @@ -2103,7 +2103,7 @@ _group_items_recalc(void *data) else if (!git->want_realize && git->realized) { if (!git->dragging) - _item_unrealize(git); + _item_unrealize(git, EINA_FALSE); } } } @@ -2282,14 +2282,14 @@ _update_job(void *data) it->updateme = EINA_FALSE; if (it->realized) { - _item_unrealize(it); + _item_unrealize(it, EINA_FALSE); _item_realize(it, num, EINA_FALSE); position = 1; } else { _item_realize(it, num, EINA_TRUE); - _item_unrealize(it); + _item_unrealize(it, EINA_TRUE); } if ((it->minw != itminw) || (it->minh != itminh)) recalc = 1; @@ -3179,7 +3179,7 @@ elm_genlist_clear(Evas_Object *obj) if (it->flags & ELM_GENLIST_ITEM_GROUP) it->wd->group_items = eina_list_remove(it->wd->group_items, it); elm_widget_item_pre_notify_del(it); - if (it->realized) _item_unrealize(it); + if (it->realized) _item_unrealize(it, EINA_FALSE); if (((wd->clear_me) || (!it->delete_me)) && (it->itc->func.del)) it->itc->func.del((void *)it->base.data, it->base.widget); if (it->long_timer) ecore_timer_del(it->long_timer); @@ -4041,7 +4041,7 @@ elm_genlist_item_del(Elm_Genlist_Item *it) it); if (it->block) { - if (it->realized) _item_unrealize(it); + if (it->realized) _item_unrealize(it, EINA_FALSE); it->block->changed = EINA_TRUE; if (it->wd->calc_job) ecore_job_del(it->wd->calc_job); it->wd->calc_job = ecore_job_add(_calc_job, it->wd); -- 2.7.4