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

-- 


Reply via email to