From: raster Date: Wed, 3 Aug 2011 05:39:13 +0000 (+0000) Subject: From: Hyoyoung Chang X-Git-Tag: REL_F_I9500_20120323_1~17^2~2053 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6774ead9990e36064bc9ff512e290cf1fcc052e;p=framework%2Fuifw%2Felementary.git From: Hyoyoung Chang Subject: [E-devel] [patch] elm_genlist - bugfix evas_object_del at selected callback This patch is about elm_genlist. When a user delete genlist object at selected callback, Genlist don't proper handle it. Before genlist clearing, genlist delete its widget data. So sometimes, it's crashed. I made two point diffs 1. add genlist clearning at _del_hook 2. checking at _item_select, whether it's deleted or not. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62040 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 2145459..23c2a39 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -540,6 +540,12 @@ _del_hook(Evas_Object *obj) if (wd->multi_timer) ecore_timer_del(wd->multi_timer); if (wd->mode_type) eina_stringshare_del(wd->mode_type); if (wd->scr_hold_timer) ecore_timer_del(wd->scr_hold_timer); + if (wd->walking > 0) + { + wd->walking = 0; + elm_genlist_clear(obj); + } + free(wd); } @@ -829,7 +835,14 @@ _item_select(Elm_Genlist_Item *it) call: it->walking++; it->wd->walking++; - if (it->func.func) it->func.func((void *)it->func.data, it->base.widget, it); + if (it->func.func) + { + Evas_Object *baseobj = it->base.widget; + const char *objtype = NULL; + it->func.func((void *)it->func.data, it->base.widget, it); + objtype = evas_object_type_get(baseobj); + if ((!objtype) || (!strcmp(objtype,""))) return; + } if (!it->delete_me) evas_object_smart_callback_call(it->base.widget, SIG_SELECTED, it); it->walking--;