sanghyeonlee pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d3440a9867cf67f03f7fea02075f88d0441c92e7

commit d3440a9867cf67f03f7fea02075f88d0441c92e7
Author: SangHyeon Jade Lee <dltkdgus1...@gmail.com>
Date:   Fri Sep 15 12:11:50 2017 +0900

    genlist: process item block positioning before relative item deleted
    
    process item for positioning proper relative block before it's
    relative item is deleted.
    
    Signed-off-by: SangHyeon Jade Lee <dltkdgus1...@gmail.com>
---
 src/lib/elementary/elm_genlist.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 9dc9c9809a..912cbb6932 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -167,6 +167,9 @@ static Eina_Bool 
_elm_genlist_tree_effect_setup(Elm_Genlist_Data *sd);
 
 static void _item_expanded_set_noevent(Elm_Gen_Item *it, Eina_Bool expanded);
 
+static Eina_Bool _item_process(Elm_Genlist_Data *sd, Elm_Gen_Item *it);
+static void _item_process_post(Elm_Genlist_Data *sd, Elm_Gen_Item *it);
+
 static const Elm_Action key_actions[] = {
    {"move", _key_action_move},
    {"select", _key_action_select},
@@ -3732,16 +3735,26 @@ _item_del(Elm_Gen_Item *it)
 
    evas_event_freeze(evas_object_evas_get(obj));
 
+   if (it->item->rel_revs)
+     {
+        Elm_Gen_Item *tmp;
+        EINA_LIST_FREE(it->item->rel_revs, tmp)
+          {
+             if (tmp->item->queued && !(tmp->base)->on_deletion)
+               {
+                  tmp->item->queued = EINA_FALSE;
+                  sd->queue = eina_list_remove(sd->queue, tmp);
+                  _item_process(sd, tmp);
+                  _item_process_post(sd, tmp);
+               }
+             tmp->item->rel = NULL;
+          }
+     }
    if (it->item->rel)
      {
         it->item->rel->item->rel_revs =
            eina_list_remove(it->item->rel->item->rel_revs, it);
      }
-   if (it->item->rel_revs)
-     {
-        Elm_Gen_Item *tmp;
-        EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL;
-     }
    elm_genlist_item_subitems_clear(EO_OBJ(it));
    if (sd->show_item == it) sd->show_item = NULL;
    if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);

-- 


Reply via email to