yakov pushed a commit to branch master.

http://git.enlightenment.org/tools/erigo.git/commit/?id=6c398b7aa3f9fccb424337bb908b6e937ae5eca3

commit 6c398b7aa3f9fccb424337bb908b6e937ae5eca3
Author: Yakov Goldberg <yako...@samsung.com>
Date:   Wed Nov 11 18:14:49 2015 +0200

    DnD inside window sets widget as resize object
    
    Now, when object will be dropped into a window,
    it will be set as resize object.
---
 src/bin/gui/editor.c | 75 +++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 53 insertions(+), 22 deletions(-)

diff --git a/src/bin/gui/editor.c b/src/bin/gui/editor.c
index 41119e3..cdb8286 100644
--- a/src/bin/gui/editor.c
+++ b/src/bin/gui/editor.c
@@ -1621,7 +1621,7 @@ enum
 
 /* canvas_drop_target != NULL when dropping on canvas. */
 static Eina_Bool
-_drop_target_drop(Gui_Widget *drop_target_wdg, Eo *canvas_drop_target, const 
char *drag_data, Eina_Bool dropped_to_objtree)
+_drop_target_drop(Gui_Widget *drop_target_wdg, Eo *canvas_drop_target, const 
char *drag_data, Eina_Bool dropped_to_objtree EINA_UNUSED)
 {
    DnD_Main_Obj_Info *di = NULL;
    const Gui_Widget *new_wdg = NULL;
@@ -1666,12 +1666,17 @@ _drop_target_drop(Gui_Widget *drop_target_wdg, Eo 
*canvas_drop_target, const cha
    Gui_Context *ctx = _active_context_get();
    if (!ctx) return EINA_FALSE;
    const Gui_Session *session = gui_context_editor_session_get(ctx);
+
+   /* Commeting out positioning of dropped widget.
+    * This part makes sens when DnD inside window changes position. */
+#if 0
    /* Drop when dragging from factory. */
    int drop_x = di->pointer_x, drop_y = di->pointer_y;
    if (dropped_to_objtree)
      {
         drop_x = drop_y = 0;
      }
+#endif
 
    /* FIXME: delete this, as wdg_cur must be created in _drop_target_pos()*/
    if (!_dragged_wdg)
@@ -1715,32 +1720,58 @@ _drop_target_drop(Gui_Widget *drop_target_wdg, Eo 
*canvas_drop_target, const cha
      {
         if (new_wdg)
           {
-             Gui_Widget_Property *old_prop, *prop;
-             Gui_Value *val;
-             old_prop = wdg_prop_get(new_wdg, DB_DEF_EFL_GFX_BASE_CLASS, 
POSITION_SET);
-             if (!old_prop)
-               {
-                  Op_Desc *op = 
db_mro_op_desc_get(wdg_class_name_get(new_wdg), DB_DEF_EFL_GFX_BASE_CLASS, 
POSITION_SET);
-                  prop = prop_create_for_op(op);
-               }
-             else
+             /* When dropping to window, new widget will be dropeed as resize 
object.*/
+             Object_Container *_old_container, *_new_container;
+             _old_container = (Object_Container *) 
wdg_obj_container_get(drop_target_wdg);
+             _new_container = obj_container_copy(_old_container);
+
+             memento_command_add(wdg_eid_get(drop_target_wdg),
+                                 MEMENTO_OBJ_CONTAINER,
+                                 _old_container, _new_container);
+             /* Current memento is a memento created, during _factory 
_widget_create earlier in this func. */
+             wdg_obj_container_unset(drop_target_wdg);
+             wdg_obj_container_set(drop_target_wdg, _new_container);
+
+             const Op_Desc *op_desc = 
db_container_desc_op_desc_get(db_container_desc_get(wdg_class_name_get(drop_target_wdg)),
 CONTAINER_PACK);
+             Gui_Widget_Property *prop = prop_create_for_op(op_desc);
+             Gui_Value *val = prop_value_nth_get(prop, 0);
+             gui_value_name_id_set(val, GUI_TYPE_OBJECT, wdg_eid_get(new_wdg));
+
+             Object_Container_Item *ci = obj_container_item_new(prop, 
wdg_eid_get(new_wdg));
+             wdg_obj_container_item_add(drop_target_wdg, ci, -1);
+
+             /* Commeting out positioning of dropped widget.
+              * This part makes sens when DnD inside window changes position. 
*/
+#if 0
                {
-                  prop = prop_copy(old_prop);
-               }
+                  Gui_Widget_Property *old_prop, *prop;
+                  Gui_Value *val;
+                  old_prop = wdg_prop_get(new_wdg, DB_DEF_EFL_GFX_BASE_CLASS, 
POSITION_SET);
+                  if (!old_prop)
+                    {
+                       Op_Desc *op = 
db_mro_op_desc_get(wdg_class_name_get(new_wdg), DB_DEF_EFL_GFX_BASE_CLASS, 
POSITION_SET);
+                       prop = prop_create_for_op(op);
+                    }
+                  else
+                    {
+                       prop = prop_copy(old_prop);
+                    }
 
-             val = prop_value_nth_get(prop, 0);
-             gui_value_int_set(val, drop_x);
-             val = prop_value_nth_get(prop, 1);
-             gui_value_int_set(val, drop_y);
-             propview_item_update(prop);
+                  val = prop_value_nth_get(prop, 0);
+                  gui_value_int_set(val, drop_x);
+                  val = prop_value_nth_get(prop, 1);
+                  gui_value_int_set(val, drop_y);
+                  propview_item_update(prop);
 
-             memento_command_add(wdg_eid_get(new_wdg), MEMENTO_PROPERTY, 
old_prop, prop);
+                  memento_command_add(wdg_eid_get(new_wdg), MEMENTO_PROPERTY, 
old_prop, prop);
 
-             if (old_prop)
-               {
-                  wdg_prop_remove((Gui_Widget *) new_wdg, old_prop);
+                  if (old_prop)
+                    {
+                       wdg_prop_remove((Gui_Widget *) new_wdg, old_prop);
+                    }
+                  wdg_prop_add((Gui_Widget *) new_wdg, prop);
                }
-             wdg_prop_add((Gui_Widget *) new_wdg, prop);
+#endif
           }
      }
    else if (drop_to_wdg == DROP_TO_BOX)

-- 


Reply via email to