rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=5728810cc1fa2eb51b7dcc27557ab13a7a98d8c5

commit 5728810cc1fa2eb51b7dcc27557ab13a7a98d8c5
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Thu Nov 12 11:36:25 2015 +0200

    editor: include part name in state_add/state_del signals
---
 src/bin/common/signals.h       | 10 +++++++---
 src/bin/editor/editor_states.c | 30 ++++++++++++++++++------------
 src/bin/ui/group_navigator.c   | 11 ++++++++---
 3 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index 10108c4..8ea23fe 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -144,9 +144,13 @@ typedef struct {
  */
 #define SIGNAL_EDITOR_ATTRIBUTE_CHANGED "SIGNAL_EDITOR_ATTRIBUTE_CHANGED"
 
+typedef struct {
+   const char *part_name;
+   const char *state_name;
+} Editor_State;
 /**
  * emited when state is added in editor.
- * eventinfo - stringshare with full state name
+ * eventinfo - Editor_State struct
  *
  * @ingroup Window
  */
@@ -154,11 +158,11 @@ typedef struct {
 
 /**
  * emited *before* state will be deleted in editor.
- * eventinfo - stringshare with full state name
+ * eventinfo - Editor_State struct
  *
  * @ingroup Window
  */
-#define SIGNAL_EDITOR_STATE_DEL "SIGNAL_EDITOR_STATE_DEL"
+#define SIGNAL_EDITOR_STATE_DELETED "SIGNAL_EDITOR_STATE_DELETED"
 
 /**
  * emited when project is changed in any way (through attribute, .
diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c
index 2859a67..152b41d 100644
--- a/src/bin/editor/editor_states.c
+++ b/src/bin/editor/editor_states.c
@@ -298,7 +298,7 @@ editor_state_add(Evas_Object *edit_object, Change *change, 
Eina_Bool merge __UNU
                  const char *part_name, const char *state_name, double 
state_val)
 {
    Diff *diff;
-   Eina_Stringshare *event_info;
+   Editor_State event_info;
 
    assert(edit_object != NULL);
 
@@ -321,9 +321,11 @@ editor_state_add(Evas_Object *edit_object, Change *change, 
Eina_Bool merge __UNU
    if (!edje_edit_state_add(edit_object, part_name, state_name, state_val))
      return false;
    _editor_project_changed();
-   event_info = eina_stringshare_printf("%s %.2f", state_name, state_val);
-   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void 
*)event_info);
-   eina_stringshare_del(event_info);
+   event_info.part_name = eina_stringshare_add(part_name);
+   event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, 
state_val);
+   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void 
*)&event_info);
+   eina_stringshare_del(event_info.part_name);
+   eina_stringshare_del(event_info.state_name);
    return true;
 }
 
@@ -333,7 +335,7 @@ editor_state_copy(Evas_Object *edit_object, Change *change, 
Eina_Bool merge __UN
                                          const char *state_name, double 
state_val)
 {
    Diff *diff;
-   Eina_Stringshare *event_info;
+   Editor_State event_info;
 
    assert(edit_object != NULL);
 
@@ -358,9 +360,11 @@ editor_state_copy(Evas_Object *edit_object, Change 
*change, Eina_Bool merge __UN
    if (!edje_edit_state_copy(edit_object, part_name, from_name, from_val, 
state_name, state_val))
      return false;
    _editor_project_changed();
-   event_info = eina_stringshare_printf("%s %.2f", state_name, state_val);
-   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void 
*)event_info);
-   eina_stringshare_del(event_info);
+   event_info.part_name = eina_stringshare_add(part_name);
+   event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, 
state_val);
+   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_ADDED, (void 
*)&event_info);
+   eina_stringshare_del(event_info.part_name);
+   eina_stringshare_del(event_info.state_name);
    return true;
 }
 
@@ -369,13 +373,15 @@ editor_state_del(Evas_Object *edit_object, Change 
*change, Eina_Bool merge __UNU
                  const char *part_name, const char *state_name, double 
state_val)
 {
    Diff *diff;
-   Eina_Stringshare *event_info;
+   Editor_State event_info;
 
    assert(edit_object != NULL);
 
-   event_info = eina_stringshare_printf("%s %.2f", state_name, state_val);
-   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_DEL, (void 
*)event_info);
-   eina_stringshare_del(event_info);
+   event_info.part_name = eina_stringshare_add(part_name);
+   event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, 
state_val);
+   evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_DELETED, (void 
*)&event_info);
+   eina_stringshare_del(event_info.part_name);
+   eina_stringshare_del(event_info.state_name);
    if (change)
      {
         if (!editor_state_reset(edit_object, change, false, part_name, 
state_name, state_val))
diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c
index 90cc78c..f0b5c44 100644
--- a/src/bin/ui/group_navigator.c
+++ b/src/bin/ui/group_navigator.c
@@ -650,7 +650,7 @@ _editor_state_added_cb(void *data,
                        void *event_info)
 {
    Part_List *pl = data;
-   Eina_Stringshare *full_state_name = event_info;
+   const Editor_State *editor_state = event_info;
    Part_ *part;
    State *state;
    Eina_Bool items_expanded = false;
@@ -658,10 +658,15 @@ _editor_state_added_cb(void *data,
    const Eina_List *l;
 
    assert(pl != NULL);
-   assert(full_state_name != NULL);
+   assert(editor_state != NULL);
 
    part = elm_object_item_data_get(pl->selected_part_item);
-   state = gm_state_add(ap.project, part, full_state_name);
+   if (strcmp(editor_state->part_name, part->name))
+     {
+        part = pm_resource_unsorted_get(part->group->parts, 
editor_state->part_name);
+        group_navigator_part_select(pl->layout, part);
+     }
+   state = gm_state_add(ap.project, part, editor_state->state_name);
 
    /* callback should be called before selection to allow some additional 
loading */
    evas_object_smart_callback_call(ap.win, SIGNAL_STATE_ADDED, (void *)state);

-- 


Reply via email to