rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=1786ce90a20a0c3f9c8b04d7da31bd0a9943c198
commit 1786ce90a20a0c3f9c8b04d7da31bd0a9943c198 Author: Andrii Kroitor <an.kroi...@samsung.com> Date: Mon Dec 21 17:33:16 2015 +0200 workspace: fix part del logic --- src/bin/common/signals.h | 16 ---------------- src/bin/ui/group_navigator.c | 22 ++++------------------ src/bin/ui/group_navigator.h | 3 +++ src/bin/ui/tabs.c | 29 +++++++++++++++-------------- src/bin/ui/workspace/workspace.c | 22 +++++++++++++--------- src/bin/ui/workspace/workspace.h | 11 +++++------ 6 files changed, 40 insertions(+), 63 deletions(-) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 8da3ff0..3a2ea90 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -69,14 +69,6 @@ #define SIGNAL_PART_UNSELECTED "SIGNAL_PART_UNSELECTED" /** - * emited when new part is added. - * eventinfo - pointer to Part_ structure - * - * @ingroup Window - */ -#define SIGNAL_PART_ADDED "SIGNAL_PART_ADDED" - -/** * emited when new part_item is added. * eventinfo - pointer to Part_ structure * @@ -84,14 +76,6 @@ */ #define SIGNAL_PART_ITEM_ADDED "SIGNAL_PART_ITEM_ADDED" -/** - * emited when part is deleted. - * eventinfo - pointer to Part_ structure - * - * @ingroup Window - */ -#define SIGNAL_PART_DELETED "SIGNAL_PART_DELETED" - typedef struct { const char *old_name; const char *new_name; diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c index 2ecae16..9ab0de0 100644 --- a/src/bin/ui/group_navigator.c +++ b/src/bin/ui/group_navigator.c @@ -1027,33 +1027,20 @@ _part_item_find(Part_List *pl, Part_ *part) return part_item; } -static void -_editor_part_deleted_cb(void *data, - Evas_Object *obj __UNUSED__, - void *event_info) +void +group_navigator_part_del(Evas_Object *obj, Part_ *part) { - Part_List *pl = data; - Eina_Stringshare *part_name = event_info; - Part_ *part; + Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); Elm_Object_Item *part_item; assert(pl != NULL); - assert(part_name != NULL); - - part = pm_resource_unsorted_get(pl->group->parts, part_name); + assert(part != NULL); part_item = _part_item_find(pl, part); if (pl->selected_part_item == part_item) _unselect_part(pl); - /* This callbck should be called before actual part deletion */ - evas_object_smart_callback_call(ap.win, SIGNAL_PART_DELETED, (void *)part); - elm_object_item_del(part_item); - /* part is freed after deletion so we need to save its name */ - part_name = eina_stringshare_ref(part->name); - gm_part_del(ap.project, part); - eina_stringshare_del(part_name); } static void @@ -1597,7 +1584,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_DELETED, _editor_part_deleted_cb, pl); evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, _editor_part_item_added_cb, pl); 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); diff --git a/src/bin/ui/group_navigator.h b/src/bin/ui/group_navigator.h index fb0f11f..b542e80 100644 --- a/src/bin/ui/group_navigator.h +++ b/src/bin/ui/group_navigator.h @@ -91,4 +91,7 @@ group_navigator_part_update(Evas_Object *obj, Part_ *part); void group_navigator_part_add(Evas_Object *obj, Part_ *part); + +void +group_navigator_part_del(Evas_Object *obj, Part_ *part); #endif /* GROUP_NAVIGATOR_H */ diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index 3d8d789..29a7b7f 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -212,18 +212,6 @@ _part_item_added(void *data __UNUSED__, } static void -_part_deleted(void *data __UNUSED__, - Evas_Object *obj __UNUSED__, - void *ei) -{ - Part_ *part = ei; - - assert(tabs.current_workspace != NULL); - - workspace_edit_object_part_del(tabs.current_workspace, part); -} - -static void _part_renamed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *ei) @@ -334,6 +322,20 @@ _editor_part_added_cb(void *data __UNUSED__, workspace_part_add(tabs.current_workspace, part_name); } +static void +_editor_part_deleted_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info) +{ + Eina_Stringshare *part_name = event_info; + + assert(part_name != NULL); + assert(tabs.current_group != NULL); + assert(tabs.current_workspace != NULL); + + workspace_part_del(tabs.current_workspace, part_name); +} + Evas_Object * tabs_add(void) { @@ -416,7 +418,6 @@ tabs_add(void) elm_object_item_disabled_set(tabs.menu.item_colorclass, true); evas_object_smart_callback_add(ap.win, SIGNAL_PROPERTY_ATTRIBUTE_CHANGED, _property_attribute_changed, NULL); - evas_object_smart_callback_add(ap.win, SIGNAL_PART_DELETED, _part_deleted, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PART_UNSELECTED, _part_unselected, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_PART_ITEM_ADDED, _part_item_added, NULL); @@ -426,7 +427,7 @@ tabs_add(void) evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CLOSED, _project_closed, NULL); 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_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_RESTACKED, _editor_part_restacked_cb, NULL); diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 292fa36..68ca357 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1730,15 +1730,6 @@ workspace_edit_object_soft_update(Evas_Object *obj) } Eina_Bool -workspace_edit_object_part_del(Evas_Object *obj, Part_ *part) -{ - WS_DATA_GET(obj, sd); - assert(part != NULL); - - return groupedit_edit_object_part_del(sd->groupedit, part); -} - -Eina_Bool workspace_edit_object_part_state_set(Evas_Object *obj, Part_ *part) { WS_DATA_GET(obj, sd); @@ -1903,3 +1894,16 @@ workspace_part_add(Evas_Object *obj, Eina_Stringshare *part_name) groupedit_edit_object_part_add(sd->groupedit, part); group_navigator_part_add(sd->group_navigator, part); } + +void +workspace_part_del(Evas_Object *obj, Eina_Stringshare *part_name) +{ + Part_ *part; + WS_DATA_GET(obj, sd); + assert(part_name != NULL); + + part = pm_resource_unsorted_get(sd->group->parts, part_name); + group_navigator_part_del(sd->group_navigator, part); + groupedit_edit_object_part_del(sd->groupedit, part); + gm_part_del(ap.project, part); +} diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index 21b63b9..d849dc1 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -118,17 +118,16 @@ void workspace_part_add(Evas_Object *obj, Eina_Stringshare *part_name); /** - * Delete part from style, which currently loaded into workspace. + * Del part from group_edit and group_navigator. + * Part should be already deleted edit_object. * * @param obj The workspace object. - * @param part Pointer to deleting part. - * - * @return EINA_FALSE on failure, EINA_TRUE on success. + * @param part_name name of deleted part * * @ingroup Workspace */ -Eina_Bool -workspace_edit_object_part_del(Evas_Object *obj, Part_ *part); +void +workspace_part_del(Evas_Object *obj, Eina_Stringshare *part_name); /** * --