rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=d0b4d55be3e392b1016989590c2f751bd440e70d
commit d0b4d55be3e392b1016989590c2f751bd440e70d Author: Andrii Kroitor <an.kroi...@samsung.com> Date: Wed Jul 13 15:33:07 2016 +0300 group_navigator: fix selection after data_del --- src/bin/ui/workspace/group_navigator.c | 22 +++++++++++++++------- src/bin/ui/workspace/group_navigator.h | 2 +- src/bin/ui/workspace/workspace.c | 8 +++++++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/bin/ui/workspace/group_navigator.c b/src/bin/ui/workspace/group_navigator.c index e7375fe..2580746 100644 --- a/src/bin/ui/workspace/group_navigator.c +++ b/src/bin/ui/workspace/group_navigator.c @@ -462,6 +462,7 @@ _contract_request_cb(void *data __UNUSED__, static Elm_Object_Item * _part_item_find(Part_List *pl, Part *part); static Elm_Object_Item * _program_glit_find(Part_List *pl, Program *part); +static Elm_Object_Item * _group_data_item_find(Part_List *pl, Resource *group_data); void group_navigator_part_state_select(Evas_Object *obj, State *state) @@ -1844,19 +1845,26 @@ _group_data_del(Part_List *pl, } void -group_navigator_group_data_del(Evas_Object *obj, Eina_Stringshare *group_data __UNUSED__) +group_navigator_group_data_del(Evas_Object *obj, Resource *data) { Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); + Elm_Object_Item *data_glit, *to_select; assert(pl != NULL); + assert(data != NULL); + data_glit = _group_data_item_find(pl, data); + + to_select = elm_genlist_item_next_get(data_glit); + + if ((to_select == NULL) || (elm_genlist_item_item_class_get(to_select) != pl->itc_group_data)) + to_select = elm_genlist_item_prev_get(data_glit); + if ((to_select == NULL) || (elm_genlist_item_item_class_get(to_select) != pl->itc_group_data)) + to_select = pl->data_caption_item; + + elm_object_item_del(data_glit); elm_genlist_item_update(pl->data_caption_item); - if (elm_genlist_item_expanded_get(pl->data_caption_item)) - { - elm_genlist_item_expanded_set(pl->data_caption_item, false); - elm_genlist_item_expanded_set(pl->data_caption_item, true); - } - elm_genlist_item_selected_set(pl->data_caption_item, true); + elm_genlist_item_selected_set(to_select, true); } static void diff --git a/src/bin/ui/workspace/group_navigator.h b/src/bin/ui/workspace/group_navigator.h index 223e278..6ef86db 100644 --- a/src/bin/ui/workspace/group_navigator.h +++ b/src/bin/ui/workspace/group_navigator.h @@ -108,7 +108,7 @@ void group_navigator_group_data_add(Evas_Object *obj, Eina_Stringshare *group_data); void -group_navigator_group_data_del(Evas_Object *obj, Eina_Stringshare *group_data); +group_navigator_group_data_del(Evas_Object *obj, Resource *group_data); void group_navigator_add_part_request(Evas_Object *obj); diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 6037472..19f7916 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1750,11 +1750,17 @@ workspace_group_data_add(Evas_Object *obj, Eina_Stringshare *group_data_name) void workspace_group_data_del(Evas_Object *obj, Eina_Stringshare *group_data_name) { + Resource request; + Resource *group_data; WS_DATA_GET(obj); assert(group_data_name != NULL); + request.resource_type = RESOURCE_TYPE_DATA; + request.name = group_data_name; + group_data = resource_get(wd->group->data_items, &request); + + group_navigator_group_data_del(wd->group_navi, group_data); gm_group_data_del(ap.project, wd->group, group_data_name); - group_navigator_group_data_del(wd->group_navi, group_data_name); } void --