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);
 

-- 


Reply via email to