jaehyun pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=849c01410cc96b8bf9117a4654b1c5674f19163d
commit 849c01410cc96b8bf9117a4654b1c5674f19163d Author: Jaehyun Cho <jae_hyun....@samsung.com> Date: Wed Mar 23 22:47:31 2016 +0900 edj_viewer: Check if edj file set is finished. Check if edj file set is finished and do not call edje_edit functions if edj file set is not finished. Test Plan: 1. Open edc 2. Modify edc incorrectly (e.g. Remove semicolon) 3. Save edc 4. Open the saved edc 5. Mouse double click "target" in program. --- src/lib/ctxpopup.c | 5 +++++ src/lib/edj_viewer.c | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/lib/ctxpopup.c b/src/lib/ctxpopup.c index 5c7469f..9bfdf6d 100644 --- a/src/lib/ctxpopup.c +++ b/src/lib/ctxpopup.c @@ -573,6 +573,7 @@ part_candidate_set(Evas_Object *ctxpopup, ctxpopup_data *ctxdata) view_data *vd = edj_mgr_view_get(NULL); if (!vd) return EINA_FALSE; Eina_List *parts = view_parts_list_get(vd); + if (!parts) return EINA_FALSE; Eina_List *l; char *part; EINA_LIST_FOREACH(parts, l, part) @@ -592,6 +593,7 @@ image_candidate_set(Evas_Object *ctxpopup, ctxpopup_data *ctxdata) view_data *vd = edj_mgr_view_get(NULL); if (!vd) return EINA_FALSE; Eina_List *parts = view_images_list_get(vd); + if (!parts) return EINA_FALSE; Eina_List *l; char *part; EINA_LIST_FOREACH(parts, l, part) @@ -610,6 +612,7 @@ program_candidate_set(Evas_Object *ctxpopup, ctxpopup_data *ctxdata) view_data *vd = edj_mgr_view_get(NULL); if (!vd) return EINA_FALSE; Eina_List *parts = view_programs_list_get(vd); + if (!parts) return EINA_FALSE; Eina_List *l; char *part; EINA_LIST_FOREACH(parts, l, part) @@ -644,6 +647,7 @@ state_candidate_set(Evas_Object *ctxpopup, ctxpopup_data *ctxdata, program = edit_cur_prog_name_get(ed); if (!program) return EINA_FALSE; targets = view_program_targets_get(vd, program); + if (!targets) goto end; target = eina_list_data_get(targets); if (!target) goto end; } @@ -655,6 +659,7 @@ state_candidate_set(Evas_Object *ctxpopup, ctxpopup_data *ctxdata, } Eina_List *states = view_part_states_list_get(vd, target); + if (!states) goto end; /* Since the states have the name + float values, it needs to filterout the values. */ diff --git a/src/lib/edj_viewer.c b/src/lib/edj_viewer.c index 9eabcd5..5287d39 100644 --- a/src/lib/edj_viewer.c +++ b/src/lib/edj_viewer.c @@ -49,6 +49,7 @@ struct viewer_s } changed_part; Eina_Bool edj_reload_need : 1; + Eina_Bool file_set_finished : 1; }; const char *PART_NAME = "part_name"; @@ -153,6 +154,8 @@ view_images_monitor_set(view_data *vd) static void view_obj_create_post_job(view_data *vd) { + vd->file_set_finished = EINA_TRUE; + vd->exe_del_event = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_del_event_cb, vd); @@ -662,6 +665,7 @@ view_program_run(view_data *vd, const char *program) { if (!vd) return; if (!program || !vd->layout) return; + if (!vd->file_set_finished) return; edje_edit_program_run(vd->layout, program); evas_object_smart_callback_call(vd->enventor, SIG_PROGRAM_RUN, (void*)program); @@ -811,36 +815,42 @@ view_size_get(view_data *vd, Evas_Coord *w, Evas_Coord *h) Eina_List * view_parts_list_get(view_data *vd) { + if (!vd->file_set_finished) return NULL; return edje_edit_parts_list_get(vd->layout); } Eina_List * view_images_list_get(view_data *vd) { + if (!vd->file_set_finished) return NULL; return edje_edit_images_list_get(vd->layout); } Eina_List * view_programs_list_get(view_data *vd) { + if (!vd->file_set_finished) return NULL; return edje_edit_programs_list_get(vd->layout); } Edje_Part_Type view_part_type_get(view_data *vd, const char *part) { + if (!vd->file_set_finished) return EDJE_PART_TYPE_NONE; return edje_edit_part_type_get(vd->layout, part); } Eina_List * view_part_states_list_get(view_data *vd, const char *part) { + if (!vd->file_set_finished) return NULL; return edje_edit_part_states_list_get(vd->layout, part); } Eina_List * view_program_targets_get(view_data *vd, const char *prog) { + if (!vd->file_set_finished) return NULL; return edje_edit_program_targets_get(vd->layout, prog); } @@ -856,6 +866,7 @@ view_part_state_set(view_data *vd, Eina_Stringshare *part, { if (!vd) return; if (!part && !vd->changed_part.part) return; + if (!vd->file_set_finished) return; //reset previous part? if (part != vd->changed_part.part) --