hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=193ec29fa0ec30b5f5b57cef713f44dfc17acdcd

commit 193ec29fa0ec30b5f5b57cef713f44dfc17acdcd
Author: Hermet Park <[email protected]>
Date:   Mon Jul 4 17:53:54 2016 +0900

    multi-file: support live editor.
    
    Additional implementation.
    Now it works for live editing.
---
 src/bin/live_edit.c      | 16 ++++++++++++++--
 src/lib/dummy_obj.c      | 21 ++++++++++++---------
 src/lib/edc_editor.c     |  3 ++-
 src/lib/edc_parser.c     | 37 +++++++++++--------------------------
 src/lib/edj_mgr.c        |  1 -
 src/lib/enventor_smart.c |  2 +-
 6 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/src/bin/live_edit.c b/src/bin/live_edit.c
index 75990f1..16bcab9 100644
--- a/src/bin/live_edit.c
+++ b/src/bin/live_edit.c
@@ -222,7 +222,9 @@ view_obj_get(live_data *ld)
 {
    //This is a trick! we got the actual view object from the live edit.
    Evas_Object *o = view_scroller_get(ld);
+   if (!o) return NULL;
    Evas_Object *o2 = elm_object_content_get(o);
+   if (!o2) return NULL;
    return elm_object_part_content_get(o2, "elm.swallow.content");
 }
 
@@ -1959,7 +1961,7 @@ rel_to_values_reset(live_data *ld)
    ld->rel_to_info.min_h = 0;
 }
 
-static void
+static Eina_Bool
 live_edit_layer_set(live_data *ld)
 {
    //Keygrabber
@@ -1995,7 +1997,15 @@ live_edit_layer_set(live_data *ld)
    //Create Live View Layout
    Evas_Object *layout = elm_layout_add(ld->live_view);
    Evas_Object *view_obj = view_obj_get(ld);
+   if (!view_obj)
+     {
+        stats_info_msg_update("Live Edit is not avaiable here. A base group is 
required!");
+        live_edit_cancel(EINA_FALSE);
+        return EINA_FALSE;
+     }
    evas_object_smart_member_add(layout, view_obj);
+   //Live Edit layout should be more than spacer and dummies. 
+   evas_object_layer_set(layout, EVAS_LAYER_MAX);
    elm_layout_file_set(layout, EDJE_PATH,  "live_edit_layout");
    evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN,
                                   layout_mouse_down_cb, ld);
@@ -2024,6 +2034,8 @@ live_edit_layer_set(live_data *ld)
    ld->last_cp = Ctrl_Pt_Cnt;
 
    panes_live_edit_fixed_bar_visible_set(EINA_TRUE);
+
+   return EINA_TRUE;
 }
 
 static void
@@ -2041,7 +2053,7 @@ live_btn_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    ld->live_view = enventor_object_live_view_get(base_enventor_get());
    ld->on = EINA_TRUE;
 
-   live_edit_layer_set(ld);
+   if (!live_edit_layer_set(ld)) return;
 
    stats_info_msg_update(_("Double click part to confirm."
                            "(Esc = cancel, Direction Key ="
diff --git a/src/lib/dummy_obj.c b/src/lib/dummy_obj.c
index f8740d7..ac72a83 100644
--- a/src/lib/dummy_obj.c
+++ b/src/lib/dummy_obj.c
@@ -146,22 +146,25 @@ dummy_objs_update(dummy_obj *dummy)
                   }
              if (!obj)
                {
+                  //Trick!. set smart members of actual live view object.
                   Evas_Object *scroller = view_obj_get(VIEW_DATA);
-                  Evas_Object *scroller_edje = elm_layout_edje_get(scroller);
-                  Evas_Object *clipper =
-                     (Evas_Object *)edje_object_part_object_get(scroller_edje,
-                                                                "clipper");
-                  obj = elm_layout_add(scroller);
-                  elm_layout_file_set(obj, EDJE_PATH, "spacer");
-                  evas_object_smart_member_add(obj, scroller);
-
+                  if (!scroller) continue;
+                  Evas_Object *o = elm_object_content_get(scroller);
+                  if (!o) continue;
+                  Evas_Object *o2 =
+                     elm_object_part_content_get(o, "elm.swallow.content");
+                  if (!o2) continue;
+
+                  obj = edje_object_add(evas);
+                  edje_object_file_set(obj, EDJE_PATH, "spacer");
+                  evas_object_layer_set(obj, EVAS_LAYER_MAX - 1);
+                  evas_object_smart_member_add(obj, o2);
 
                   po = malloc(sizeof(part_obj));
                   po->obj = obj;
                   po->name = eina_stringshare_add(part_name);
                   dummy->spacers = eina_list_append(dummy->spacers, po);
                   evas_object_show(obj);
-                  evas_object_clip_set(obj, clipper);
                   evas_object_data_set(obj, EDIT_LAYOUT_KEY, dummy->layout);
 
                   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c
index 79f773a..34c29da 100644
--- a/src/lib/edc_editor.c
+++ b/src/lib/edc_editor.c
@@ -1427,6 +1427,7 @@ edit_init(Enventor_Object *enventor, Enventor_Item *it)
    ed->pd = parser_init();
    ed->rd = redoundo_init(ed, enventor);
    ed->sh = syntax_init(ed);
+   ed->main = (enventor_object_main_item_get(ed->enventor) == ed->it);
 
    return ed;
 }
@@ -1843,7 +1844,7 @@ edit_text_get(edit_data *ed)
 Eina_Bool
 edit_is_main_file(edit_data *ed)
 {
-   return (enventor_object_main_item_get(ed->enventor) == ed->it);
+   return ed->main;
 }
 
 Eina_Bool
diff --git a/src/lib/edc_parser.c b/src/lib/edc_parser.c
index 34146b2..58f07a7 100644
--- a/src/lib/edc_parser.c
+++ b/src/lib/edc_parser.c
@@ -321,7 +321,6 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
    const char *DEF_STATE_NAME = "default";
    const int DEF_STATE_LEN = 7;
 
-
    cur_context_td *td = data;
    char *utf8 = td->utf8;
    int cur_pos = td->cur_pos;
@@ -346,6 +345,8 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
    int cur_line = 1;
    Eina_List *macro_list = NULL;
 
+   if (!collections) bracket = 1;
+
    if (td->pd->macro_update)
      {
         parser_macro_list_set(td->pd, (const char *) utf8);
@@ -397,28 +398,15 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
           {
              bracket--;
              p++;
-
-             if (collections)
-               {
-                  if (bracket == 1) group_name = NULL;
-                  else if (bracket == 2 && inside_parts == EINA_TRUE)
-                    inside_parts = EINA_FALSE;
-                  else if (bracket == 3) part_name = NULL;
-                  else if (bracket == 4) desc_name = NULL;
-               }
-             else
-               {
-                  if (bracket == 0) group_name = NULL;
-                  else if (bracket == 1 && inside_parts == EINA_TRUE)
-                    inside_parts = EINA_FALSE;
-                  else if (bracket == 2) part_name = NULL;
-                  else if (bracket == 3) desc_name = NULL;
-               }
+             if (bracket == 1) group_name = NULL;
+             else if (bracket == 2 && inside_parts == EINA_TRUE)
+               inside_parts = EINA_FALSE;
+             else if (bracket == 3) part_name = NULL;
+             else if (bracket == 4) desc_name = NULL;
              continue;
           }
         //check block "Parts" in
-        if ((collections && (bracket == 2)) ||
-            (!collections && (bracket == 1)))
+        if (bracket == 2)
           {
              if (!strncmp(p, PARTS, PARTS_LEN))
                {
@@ -429,8 +417,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
                }
          }
         //Check Part in
-        if ((collections && (bracket == 3)) ||
-             (!collections && (bracket == 2)))
+        if (bracket == 3)
           {
              int part_idx = -1;
               //part ? image ? swallow ? text ? rect ?
@@ -461,8 +448,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
                 }
           }
         //Check Description in
-        if ((collections && (bracket == 4)) ||
-            (!collections && (bracket == 3)))
+        if (bracket == 4)
           {
              //description? or desc?
              int desc_idx = -1;
@@ -559,8 +545,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread 
*thread EINA_UNUSED)
                }
           }
         //Check Group in. Probably inside of collections or the most outside.
-        if ((collections && (bracket == 1)) ||
-            (!collections && (bracket == 0)))
+        if (bracket == 1)
           {
              if (!strncmp(p, GROUP, GROUP_LEN))
                {
diff --git a/src/lib/edj_mgr.c b/src/lib/edj_mgr.c
index 46e5e02..dccae24 100644
--- a/src/lib/edj_mgr.c
+++ b/src/lib/edj_mgr.c
@@ -168,7 +168,6 @@ edj_mgr_view_switch_to(view_data *vd)
       elm_object_part_content_unset(em->layout, "elm.swallow.content");
    elm_object_part_content_set(em->layout, "elm.swallow.content",
                                view_obj_get(vd));
-
    view_scale_set(vd, em->view_scale);
 
    //Switching effect
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index 8ab339f..a9455ae 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -767,7 +767,7 @@ _enventor_object_template_part_insert(Eo *obj EINA_UNUSED,
        rel2_x_to =  buf;
      }
 
-   return template_part_insert(pd->main_it.ed, part, insert_type,
+   return template_part_insert(pd->focused_it->ed, part, insert_type,
                                fixed_w, fixed_h,
                                rel1_x_to, rel1_y_to,
                                rel2_x_to, rel2_y_to,

-- 


Reply via email to