rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=28e1d2de529a88babeb5be9cd4eea8eae508d539
commit 28e1d2de529a88babeb5be9cd4eea8eae508d539 Author: Andrii Kroitor <an.kroi...@samsung.com> Date: Tue Dec 22 15:49:43 2015 +0200 workspace: fix part_item del logic --- src/bin/ui/group_navigator.c | 20 ++++---------------- src/bin/ui/group_navigator.h | 3 +++ src/bin/ui/tabs.c | 16 +++++++++++++++- src/bin/ui/workspace/workspace.c | 20 ++++++++++++++++++++ src/bin/ui/workspace/workspace.h | 15 +++++++++++++++ 5 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c index e7c822b..68a052e 100644 --- a/src/bin/ui/group_navigator.c +++ b/src/bin/ui/group_navigator.c @@ -1133,30 +1133,19 @@ _item_del(Part_List *pl, history_change_add(pl->group->history, change); } -static void -_editor_part_item_deleted_cb(void *data, - Evas_Object *obj __UNUSED__, - void *event_info) +void +group_navigator_part_item_del(Evas_Object *obj, Part_ *part __UNUSED__, Eina_Stringshare *item_name) { - Part_List *pl = data; - const Editor_Item *editor_item = event_info; - Part_ *part; + Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); Elm_Object_Item *items_glit; assert(pl != NULL); - assert(editor_item != NULL); + assert(item_name != NULL); - part = elm_object_item_data_get(pl->selected_part_item); - if (strcmp(editor_item->part_name, part->name)) - { - part = pm_resource_unsorted_get(part->group->parts, editor_item->part_name); - group_navigator_part_select(pl->layout, part); - } elm_genlist_item_expanded_set(pl->selected_part_item, true); items_glit = eina_list_data_get(eina_list_last(elm_genlist_item_subitems_get(pl->selected_part_item))); elm_genlist_item_expanded_set(items_glit, false); - gm_part_item_del(ap.project, part, editor_item->item_name); elm_genlist_item_update(items_glit); elm_genlist_item_expanded_set(items_glit, true); } @@ -1562,7 +1551,6 @@ group_navigator_add(Group *group) pl->name_validator = elm_validator_regexp_new(PART_NAME_REGEX, NULL); TODO("Fix multi-tab logic"); - evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, _editor_part_item_deleted_cb, pl); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_RESTACKED, _editor_part_restacked_cb, pl); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_RESTACKED, _editor_part_item_restacked_cb, pl); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_ADDED, _editor_state_added_cb, pl); diff --git a/src/bin/ui/group_navigator.h b/src/bin/ui/group_navigator.h index b0f3b3d..19cefc2 100644 --- a/src/bin/ui/group_navigator.h +++ b/src/bin/ui/group_navigator.h @@ -97,4 +97,7 @@ group_navigator_part_del(Evas_Object *obj, Part_ *part); void group_navigator_part_item_add(Evas_Object *obj, Part_ *part, Eina_Stringshare * item_name); + +void +group_navigator_part_item_del(Evas_Object *obj, Part_ *part, Eina_Stringshare * item_name); #endif /* GROUP_NAVIGATOR_H */ diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index 8bef710..7d8faad 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -340,6 +340,20 @@ _editor_part_item_added_cb(void *data __UNUSED__, workspace_part_item_add(tabs.current_workspace, editor_item->part_name, editor_item->item_name); } +static void +_editor_part_item_deleted_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info) +{ + const Editor_Item *editor_item = event_info; + + assert(editor_item != NULL); + assert(tabs.current_group != NULL); + assert(tabs.current_workspace != NULL); + + workspace_part_item_del(tabs.current_workspace, editor_item->part_name, editor_item->item_name); +} + Evas_Object * tabs_add(void) { @@ -432,7 +446,7 @@ tabs_add(void) evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ADDED, _editor_part_added_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_DELETED, _editor_part_deleted_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, _editor_part_item_added_cb, NULL); - //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, _editor_part_item_deleted_cb, NULL); + evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, _editor_part_item_deleted_cb, NULL); //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_RESTACKED, _editor_part_restacked_cb, NULL); //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_RESTACKED, _editor_part_item_restacked_cb, NULL); //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_STATE_ADDED, _editor_state_added_cb, NULL); diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 2523405..ec24843 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1919,3 +1919,23 @@ workspace_part_item_add(Evas_Object *obj, groupedit_hard_update(sd->groupedit); group_navigator_part_item_add(sd->group_navigator, part, item_name); } + +void +workspace_part_item_del(Evas_Object *obj, + Eina_Stringshare *part_name, + Eina_Stringshare *item_name) +{ + Part_ *part; + WS_DATA_GET(obj, sd); + assert(part_name != NULL); + assert(item_name != NULL); + + part = pm_resource_unsorted_get(sd->group->parts, part_name); + + assert((part->type == EDJE_PART_TYPE_TABLE) || + (part->type == EDJE_PART_TYPE_BOX)); + + group_navigator_part_select(sd->group_navigator, part); + gm_part_item_del(ap.project, part, item_name); + group_navigator_part_item_del(sd->group_navigator, part, item_name); +} diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index bd16b34..4113697 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -123,6 +123,21 @@ workspace_part_item_add(Evas_Object *obj, Eina_Stringshare *item_name); /** + * Add new part item to group_edit and group_navigator. + * Part should be already deleted from edit_object. + * + * @param obj The workspace object. + * @param part_name name of part + * @param item_name name of deleted part_item + * + * @ingroup Workspace + */ +void +workspace_part_item_del(Evas_Object *obj, + Eina_Stringshare *part_name, + Eina_Stringshare *item_name); + +/** * Del part from group_edit and group_navigator. * Part should be already deleted edit_object. * --