rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=98524620d2abf369a03e1979ece732ce969ec0df
commit 98524620d2abf369a03e1979ece732ce969ec0df Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Mon Sep 12 16:52:11 2016 +0300 resource_manager2: item source update after property --- src/bin/editor/editor_part.c | 12 ++++++++++-- src/bin/resource_manager/resource_manager_react.c | 21 +++++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/bin/editor/editor_part.c b/src/bin/editor/editor_part.c index 5391407..cd9a5dd 100644 --- a/src/bin/editor/editor_part.c +++ b/src/bin/editor/editor_part.c @@ -263,13 +263,17 @@ editor_part_item_source_set(Evas_Object *edit_object, Change *change, Eina_Bool { Diff *diff; Editor_Attribute_Change send; - send.attribute = RM_ATTRIBUTE_PART_ITEM_SOURCE; assert(edit_object != NULL); assert(part_name != NULL); assert(item_name != NULL); + Eina_Stringshare *old_value = edje_edit_part_item_source_get(edit_object, part_name, item_name); + send.attribute = RM_ATTRIBUTE_PART_ITEM_SOURCE; + send.part_name = eina_stringshare_add(part_name); + send.item_name = eina_stringshare_add(item_name); + send.old_value = eina_stringshare_add(old_value); + send.value = eina_stringshare_add(new_val); if (change) { - Eina_Stringshare *old_value = edje_edit_part_item_source_get(edit_object, part_name, item_name); diff = mem_calloc(1, sizeof(Diff)); diff->redo.type = FUNCTION_TYPE_STRING_STRING_STRING; diff->redo.function = editor_part_item_source_set; @@ -294,6 +298,10 @@ editor_part_item_source_set(Evas_Object *edit_object, Change *change, Eina_Bool CRIT_ON_FAIL(editor_save(edit_object)); if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send); } + eina_stringshare_del(part_name); + eina_stringshare_del(item_name); + eina_stringshare_del(old_value); + eina_stringshare_del(new_val); return true; } diff --git a/src/bin/resource_manager/resource_manager_react.c b/src/bin/resource_manager/resource_manager_react.c index 905b98f..0aedc54 100644 --- a/src/bin/resource_manager/resource_manager_react.c +++ b/src/bin/resource_manager/resource_manager_react.c @@ -89,7 +89,7 @@ _property_attribute_changed(void *data, ** > expand editor (top blocks like image, sound, etc) not supported ** *********************************************************************** ***********************************************************************/ - Resource2 *part, *source, *old_source; + Resource2 *part, *source, *old_source, *item; Editor_Attribute_Change *change = (Editor_Attribute_Change *)event_info; Attribute editor_resource = (int)change->attribute; @@ -219,12 +219,29 @@ _property_attribute_changed(void *data, case RM_ATTRIBUTE_PART_ITEM_SPAN_ROW: case RM_ATTRIBUTE_PART_ITEM_POSITION_COL: case RM_ATTRIBUTE_PART_ITEM_POSITION_ROW: - case RM_ATTRIBUTE_PART_ITEM_SOURCE: case RM_ATTRIBUTE_PART_ITEM_PADDING_RIGHT: case RM_ATTRIBUTE_PART_ITEM_PADDING_LEFT: case RM_ATTRIBUTE_PART_ITEM_PADDING_TOP: case RM_ATTRIBUTE_PART_ITEM_PADDING_BOTTOM: break; + case RM_ATTRIBUTE_PART_ITEM_SOURCE: + part = resource_manager_find(group->parts, change->part_name); + item = resource_manager_find(((Part *)part)->items, change->item_name); + + /* if old_valuye wasn't null and wasn't compared to EFLETE_INTERNAL_GROUP_NAME */ + if (change->old_value && strcmp(change->old_value, EFLETE_INTERNAL_GROUP_NAME)) + { + old_source = resource_manager_find(pro->RM.groups, change->old_value); + _resource_usage_resource_del(item, old_source); + } + + /* if new value is not null and not internal group */ + if (change->value && strcmp(change->old_value, EFLETE_INTERNAL_GROUP_NAME)) + { + source = resource_manager_find(pro->RM.groups, change->value); + _resource_usage_resource_add(item, source); + } + break; case RM_ATTRIBUTE_PART_GROUP_SOURCE: part = resource_manager_find(group->parts, change->part_name); --