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;
 

-- 


Reply via email to