nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=a280c4b2b77f7417659e2c40a1f3d979aac5e09d
commit a280c4b2b77f7417659e2c40a1f3d979aac5e09d Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Wed Aug 10 11:49:16 2016 +0300 editor_program: emit_source should be not NULL if emit_signal is setted The program attribute emit_source shoult be not NULL if user set new value only for emit_signal. Edje dislike the NULL values and ignore it, so we must to set empty strings if want to get a valid program. @fix Change-Id: Ia5186a980d2d381418b24923e155f6b4e5632ba6 --- src/bin/editor/editor_program.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/bin/editor/editor_program.c b/src/bin/editor/editor_program.c index 4b12d3a..2431781 100644 --- a/src/bin/editor/editor_program.c +++ b/src/bin/editor/editor_program.c @@ -503,13 +503,49 @@ EDITOR_PROGRAM_STRING(source, source, ATTRIBUTE_PROGRAM_SOURCE); EDITOR_PROGRAM_STRING(state, state, ATTRIBUTE_PROGRAM_STATE); EDITOR_PROGRAM_DOUBLE(value, value, ATTRIBUTE_PROGRAM_VALUE); -EDITOR_PROGRAM_STRING(emit_signal, state, ATTRIBUTE_PROGRAM_EMIT_SIGNAL); EDITOR_PROGRAM_STRING(emit_source, state2, ATTRIBUTE_PROGRAM_EMIT_SOURCE); EDITOR_PROGRAM_DOUBLE(drag_value_x, value, ATTRIBUTE_PROGRAM_DRAG_VALUE_X); EDITOR_PROGRAM_DOUBLE(drag_value_y, value2, ATTRIBUTE_PROGRAM_DRAG_VALUE_Y); Eina_Bool +editor_program_emit_signal_set(Evas_Object *edit_object, Change *change, Eina_Bool merge, Eina_Bool apply, + const char *program, const char *new_val) +{ + Diff *diff; + Attribute attribute = ATTRIBUTE_PROGRAM_EMIT_SIGNAL; + assert(edit_object != NULL); + assert(program != NULL); + if (change) + { + Eina_Stringshare *old_value = edje_edit_program_emit_signal_get(edit_object, program); + diff = mem_calloc(1, sizeof(Diff)); + diff->redo.type = FUNCTION_TYPE_STRING_STRING; + diff->redo.function = editor_program_emit_signal_set; + diff->redo.args.type_ss.s1 = eina_stringshare_add(program); + diff->redo.args.type_ss.s2 = eina_stringshare_add(new_val); + diff->undo.type = FUNCTION_TYPE_STRING_STRING; + diff->undo.function = editor_program_emit_signal_set; + diff->undo.args.type_sd.s1 = eina_stringshare_add(program); + diff->undo.args.type_ss.s2 = old_value; + if (merge) + change_diff_merge_add(change, diff); + else + change_diff_add(change, diff); + } + if (apply) + { + CRIT_ON_FAIL(edje_edit_program_state_set(edit_object, program, new_val)); + if (!edje_edit_program_emit_source_get(edit_object, program)) + CRIT_ON_FAIL(edje_edit_program_state2_set(edit_object, program, "")); + _editor_project_changed(); + if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, &attribute); + evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_PROGRAM_UPDATE, (void *)program); + } + return true; +} + +Eina_Bool editor_program_name_set(Evas_Object *edit_object, Change *change, Eina_Bool merge, Eina_Bool apply, const char *name, const char *new_val) { --