rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=fc433a7588abb99c72855779276883f639bdf471

commit fc433a7588abb99c72855779276883f639bdf471
Author: Mykyta Biliavskyi <[email protected]>
Date:   Fri Jul 8 18:54:05 2016 +0300

    Group navigator: delete group navigator correctly.
    
    On delete workspace, should be cleared group navigator.
    Add callback on delete action. Clear genlist classes and
    internal structure.
---
 src/bin/ui/workspace/group_navigator.c | 30 ++++++++++++++++++++++++++++++
 src/bin/ui/workspace/workspace.c       |  3 +++
 2 files changed, 33 insertions(+)

diff --git a/src/bin/ui/workspace/group_navigator.c 
b/src/bin/ui/workspace/group_navigator.c
index 96f3123..9bee211 100644
--- a/src/bin/ui/workspace/group_navigator.c
+++ b/src/bin/ui/workspace/group_navigator.c
@@ -2357,6 +2357,34 @@ _combobox_item_del(void *data,
    free(item);
 }
 
+static void
+_group_navigator_del(void *data,
+                     Evas *e __UNUSED__,
+                     Evas_Object *obj __UNUSED__,
+                     void *event_info __UNUSED__)
+{
+   Part_List *pl = (Part_List *)data;
+
+   elm_genlist_item_class_free(pl->itc_part);
+   elm_genlist_item_class_free(pl->itc_caption);
+   elm_genlist_item_class_free(pl->itc_group_data);
+   elm_genlist_item_class_free(pl->itc_program);
+   elm_genlist_item_class_free(pl->itc_item);
+   elm_genlist_item_class_free(pl->itc_item_caption);
+   elm_genlist_item_class_free(pl->itc_state);
+   elm_genlist_item_class_free(pl->itc_state_selected);
+   elm_genlist_item_class_free(pl->popup.itc);
+
+   evas_object_data_del(pl->layout, GROUP_NAVIGATOR_DATA);
+   evas_object_data_del(pl->menu, GROUP_NAVIGATOR_DATA);
+   evas_object_data_del(pl->genlist, GROUP_NAVIGATOR_DATA);
+
+   pl->group = NULL;
+
+   free(pl);
+
+}
+
 Evas_Object *
 group_navigator_add(Evas_Object *parent, Group *group)
 {
@@ -2514,6 +2542,8 @@ group_navigator_add(Evas_Object *parent, Group *group)
         elm_genlist_item_expanded_set(pl->data_caption_item, true);
      }
 
+   evas_object_event_callback_add(pl->layout, EVAS_CALLBACK_DEL, 
_group_navigator_del, pl);
+
    TODO("Add deletion callback and free resources");
    return pl->layout;
 }
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index a12dbf0..d4ff4d6 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -240,6 +240,9 @@ _workspace_del(void *data,
    evas_object_del(wd->demo.container);
    evas_object_hide(wd->demo.container);
 
+   evas_object_del(wd->group_navi);
+   wd->group_navi = NULL;
+
    free(wd);
 }
 

-- 


Reply via email to