rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=0e4c5c9f97650e6bcc3b833d24520992792c32a0
commit 0e4c5c9f97650e6bcc3b833d24520992792c32a0 Author: Vitalii Vorobiov <[email protected]> Date: Mon Sep 5 18:00:35 2016 +0300 resource_manager2: to avoid edje_edit use pass source together with editor signal That is For part_item @fix --- src/bin/common/signals.h | 1 + src/bin/editor/editor_part.c | 2 ++ src/bin/resource_manager/resource_manager2.c | 8 ++++++-- src/bin/resource_manager/resource_manager2.h | 1 + src/bin/resource_manager/resource_manager_build.c | 1 + src/bin/resource_manager/resource_manager_react.c | 8 ++++++-- 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 893ecd5..9ff0553 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -166,6 +166,7 @@ typedef struct { typedef struct { const char *part_name; const char *item_name; + const char *source; } Editor_Item; /** * emited when item is added in editor. diff --git a/src/bin/editor/editor_part.c b/src/bin/editor/editor_part.c index 52d3848..7164e51 100644 --- a/src/bin/editor/editor_part.c +++ b/src/bin/editor/editor_part.c @@ -679,9 +679,11 @@ editor_part_item_append(Evas_Object *edit_object, Change *change, Eina_Bool merg event_info.part_name = eina_stringshare_add(part_name); event_info.item_name = eina_stringshare_add(item_name); + event_info.source = eina_stringshare_add(source_group); if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, (void *)&event_info); eina_stringshare_del(event_info.part_name); eina_stringshare_del(event_info.item_name); + eina_stringshare_del(event_info.source); } return true; } diff --git a/src/bin/resource_manager/resource_manager2.c b/src/bin/resource_manager/resource_manager2.c index 06eb206..6ebb569 100644 --- a/src/bin/resource_manager/resource_manager2.c +++ b/src/bin/resource_manager/resource_manager2.c @@ -106,7 +106,7 @@ _resource_free(Resource2 *res) void _resource_part_free(Part2 *res) { - Resource2 *part_res; + Part_Item2 *part_res; State2 *state; EINA_LIST_FREE(res->states, state) { @@ -115,7 +115,11 @@ _resource_part_free(Part2 *res) _resource_free((Resource2 *)state); } EINA_LIST_FREE(res->items, part_res) - _resource_free(part_res); + { + if (part_res->source) + eina_stringshare_del(part_res->source); + _resource_free((Resource2 *)part_res); + } _resource_free((Resource2 *)res); } diff --git a/src/bin/resource_manager/resource_manager2.h b/src/bin/resource_manager/resource_manager2.h index 7d546c2..739c569 100644 --- a/src/bin/resource_manager/resource_manager2.h +++ b/src/bin/resource_manager/resource_manager2.h @@ -129,6 +129,7 @@ struct _State2 struct _Part_Item2 { Resource2_Internal common; + Eina_Stringshare *source; Part2 *part; }; diff --git a/src/bin/resource_manager/resource_manager_build.c b/src/bin/resource_manager/resource_manager_build.c index e22dd13..34493b0 100644 --- a/src/bin/resource_manager/resource_manager_build.c +++ b/src/bin/resource_manager/resource_manager_build.c @@ -69,6 +69,7 @@ _item_dependency_load(Project* pro, Group2 *group, Part2 *part, Part_Item2 *item Eina_Stringshare *source = edje_edit_part_item_source_get(group->edit_object, part->common.name, item->common.name); + item->source = eina_stringshare_add(source); used = resource_manager_find(pro->groups2, source); if (used) _resource_usage_resource_add((Resource2 *)item, used); diff --git a/src/bin/resource_manager/resource_manager_react.c b/src/bin/resource_manager/resource_manager_react.c index ec32489..76b91e6 100644 --- a/src/bin/resource_manager/resource_manager_react.c +++ b/src/bin/resource_manager/resource_manager_react.c @@ -412,14 +412,18 @@ _editor_part_item_added_cb(void *data, void *event_info) { const Editor_Item *editor_item = event_info; + Resource2 *used; + Part_Item2 *item; Project *pro = (Project *)data; Group2 *group = _get_current_group2(pro); Part2 *part = (Part2 *)resource_manager_find(group->parts, editor_item->part_name); - Part_Item2 *item; unsigned int count = eina_list_count(part->items); + /* we can use _item_dependency_load here, but let's avoid using edje edit */ item = _gm_part_item_add(part, editor_item->item_name, count); - _item_dependency_load(pro, group, part, item); + used = resource_manager_find(pro->groups2, editor_item->source); + if (used) + _resource_usage_resource_add((Resource2 *)item, used); } static void --
