yakov pushed a commit to branch master.

http://git.enlightenment.org/tools/erigo.git/commit/?id=827e726827cbf7c8520a4326224d56421d530554

commit 827e726827cbf7c8520a4326224d56421d530554
Author: Yakov Goldberg <yako...@samsung.com>
Date:   Sun Nov 29 11:21:52 2015 +0200

    Continue fixing parent management when change widgets packing
---
 src/bin/gui/editor.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/bin/gui/editor.c b/src/bin/gui/editor.c
index 328042e..d959672 100644
--- a/src/bin/gui/editor.c
+++ b/src/bin/gui/editor.c
@@ -4236,20 +4236,21 @@ _content_change_from_propview(void *data EINA_UNUSED, 
Eo *obj, const Eo_Event_De
 
                             item_container_item_prop_set(new_wit, new_it_prop);
                             
item_container_item_set_on_id(item_container_item_eid_get(cit), new_wit);
-
-                            memento_command_add(wdg_eid_get(new_param_wdg), 
MEMENTO_WIDGET_PARENT, wdg_eid_get(prev_wdg_container), 
wdg_eid_get(wdg_main_wdg_get(prev_wdg_container)));
-                            wdg_parent_set(new_param_wdg, 
wdg_name_get(wdg_main_wdg_get(prev_wdg_container)));
                          }
                     }
                }
+             memento_command_add(new_name_id, MEMENTO_WIDGET_PARENT, 
prev_wdg_container ? wdg_eid_get(prev_wdg_container) : 
wdg_eid_get(wdg_parent_get(new_param_wdg)), wdg_eid_get(wdg));
+             wdg_parent_set(new_param_wdg, wdg_name_get(wdg));
 
-             /* Need to unset object, which was packed in this place before*/
+             /* Check if anything was packed in this place before.
+              * If so, need to unset object, and create parent memento. */
              Gui_Value *old_packed_val = prop_value_nth_get(prop, par_idx);
-             old_packed_eid = EID_ID_GET(old_packed_val);
+             if (old_packed_val)
+               old_packed_eid = EID_ID_GET(old_packed_val);
 
+             /* Finally set new value and change conainers. */
              Eid *eid = wdg_eid_get(new_param_wdg);
              gui_value_name_id_set(val, type, eid);
-
              if (ci)
                {
                   wdg_obj_container_item_remove(wdg, ci);
@@ -4262,9 +4263,11 @@ _content_change_from_propview(void *data EINA_UNUSED, Eo 
*obj, const Eo_Event_De
              objtree_item_selected_set(wdg);
           }
      }
+
    memento_command_add(wdg_eid_get(wdg), MEMENTO_OBJ_CONTAINER, 
_old_container, _new_container);
    obj_container_unref(_old_container);
 
+   /* If any object was packed before, create memento for it.  */
    if (old_packed_eid)
      {
         if (eid_is_dummy(old_packed_eid))
@@ -4274,13 +4277,12 @@ _content_change_from_propview(void *data EINA_UNUSED, 
Eo *obj, const Eo_Event_De
         else
           {
              Gui_Widget *old_packed_wdg = wdg_get(old_packed_eid);
-             memento_command_add(old_packed_eid, MEMENTO_WIDGET_PARENT, 
wdg_eid_get(wdg_parent_get(old_packed_wdg)), 
wdg_eid_get(wdg_main_wdg_get(old_packed_wdg)));
+             memento_command_add(old_packed_eid, MEMENTO_WIDGET_PARENT, 
wdg_eid_get(wdg), wdg_eid_get(wdg_main_wdg_get(old_packed_wdg)));
              wdg_parent_set(old_packed_wdg, 
wdg_name_get(wdg_main_wdg_get(old_packed_wdg)));
           }
      }
 
    context_memento_finalize(ctx);
-
    return EO_CALLBACK_CONTINUE;
 }
 

-- 


Reply via email to