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;
 

-- 


Reply via email to