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; } --