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); } --
