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)

-- 


Reply via email to