seoz pushed a commit to branch elementary-1.12. http://git.enlightenment.org/core/elementary.git/commit/?id=6e4c61ca89c8360328ed5b4dbb42bd65639fb0c4
commit 6e4c61ca89c8360328ed5b4dbb42bd65639fb0c4 Author: Daniel Juyung Seo <[email protected]> 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 Conflicts: src/lib/elm_genlist.c --- 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 7ad7faf..4c09266 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -125,6 +125,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) @@ -4549,8 +4550,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 != (Elm_Object_Item *)it) elm_object_item_focus_set((Elm_Object_Item *)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) || @@ -5447,7 +5458,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; --
