seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=9b860e49609648b0d2835a8e603bde32b863909b
commit 9b860e49609648b0d2835a8e603bde32b863909b Author: Daniel Juyung Seo <seojuyu...@gmail.com> Date: Sun Dec 14 04:18:55 2014 +0900 genlist: Fix genlist crash issue when clearing genlist on item focus callback. This fixes "genlist focus" test sample's crash issue. @fix --- src/lib/elm_genlist.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 99130ae..1d858e8 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -126,6 +126,7 @@ static void _access_activate_cb(void *data EINA_UNUSED, Evas_Object *part_obj EINA_UNUSED, Elm_Object_Item *item); static void _decorate_item_set(Elm_Gen_Item *); +static void _internal_elm_genlist_clear(Evas_Object *obj, Eina_Bool standby); static Eina_Bool _is_no_select(Elm_Gen_Item *it) @@ -4597,8 +4598,18 @@ _item_mouse_up_cb(void *data, if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + it->walking++; + sd->walking++; if (sd->focused_item != EO_OBJ(it)) elm_object_item_focus_set(EO_OBJ(it), EINA_TRUE); + it->walking--; + sd->walking--; + + if ((sd->clear_me) && (!sd->walking)) + { + _internal_elm_genlist_clear(WIDGET(it), EINA_TRUE); + return; + } if (sd->multi && ((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) || @@ -5500,7 +5511,7 @@ _clear(Elm_Genlist_Data *sd) static void _internal_elm_genlist_clear(Evas_Object *obj, - Eina_Bool standby) + Eina_Bool standby) { Eina_Inlist *next, *l; --