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