rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=456f344b229503a23bd594b691c4b3d901a82462

commit 456f344b229503a23bd594b691c4b3d901a82462
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Tue Dec 1 15:56:28 2015 +0200

    groupedit: pack all parts view to box
    
    Now all parts packed to box with custom layout. This layout puts in
    place parts. It's broke the zoom and separate mode, but new zoom
    implementation will be very simple.
    
    TODO:
     * implement new zoom;
     * implement custom layout for separate mode.
    
    Change-Id: Ia9575d8eba43df9b44389db07f77347533587955
---
 src/bin/ui/workspace/groupedit.c         |  11 +
 src/bin/ui/workspace/groupedit_calc.c    | 368 +++++++++++++------------------
 src/bin/ui/workspace/groupedit_private.h |   8 +
 3 files changed, 171 insertions(+), 216 deletions(-)

diff --git a/src/bin/ui/workspace/groupedit.c b/src/bin/ui/workspace/groupedit.c
index cd5a7ed..0da59c2 100644
--- a/src/bin/ui/workspace/groupedit.c
+++ b/src/bin/ui/workspace/groupedit.c
@@ -230,6 +230,13 @@ _groupedit_smart_calculate(Evas_Object *o)
    evas_object_resize(priv->group->edit_object,
                       priv->con_current_size->w,
                       priv->con_current_size->h);
+  evas_object_move(priv->box,
+                   priv->con_current_size->x,
+                   priv->con_current_size->y);
+
+   evas_object_resize(priv->box,
+                      priv->con_current_size->w,
+                      priv->con_current_size->h);
 
    priv->manual_calc = false;
    _parts_recalc(priv);
@@ -276,6 +283,10 @@ groupedit_add(Evas_Object *parent, Group *group)
    sd->group = group;
    evas_object_smart_member_add(sd->group->edit_object, obj);
 
+   sd->box = elm_box_add(parent);
+   elm_box_layout_set(sd->box, _parts_stack_layout, sd, NULL);
+   evas_object_show(sd->box);
+   evas_object_smart_member_add(sd->box, obj);
    _parts_list_new(sd);
 
    /* hide the editing object by using clipper (clipper is small, it's size is 
0,0)
diff --git a/src/bin/ui/workspace/groupedit_calc.c 
b/src/bin/ui/workspace/groupedit_calc.c
index 1c13917..b7a6600 100644
--- a/src/bin/ui/workspace/groupedit_calc.c
+++ b/src/bin/ui/workspace/groupedit_calc.c
@@ -44,7 +44,7 @@ static void
 _item_draw_del(Groupedit_Item *ge_item);
 
 static void
-_part_object_area_calc(Ws_Groupedit_Smart_Data *sd);
+_part_object_area_calc(Ws_Groupedit_Smart_Data *sd, Groupedit_Part *gp);
 
 static void
 _common_param_update(Groupedit_Part *gp, Evas_Object *edit_obj);
@@ -393,6 +393,7 @@ _select_item_move_to_top(Ws_Groupedit_Smart_Data *sd)
    sd->to_select = NULL;
 }
 
+#if 0
 static void
 _part_separete_mod_mouse_click_cb(void *data,
                                   Evas *e __UNUSED__,
@@ -450,6 +451,7 @@ _part_separete_mod_mouse_out_cb(void *data,
    if (sd->selected == gp) return;
    edje_object_signal_emit(gp->item, "item,mouse,out", "eflete");
 }
+#endif /*  */
 
 static void
 _part_select(void *data,
@@ -800,14 +802,13 @@ _part_container_del(Groupedit_Part *gp)
         evas_object_repeat_events_set(OBJECT, false); \
      }
 
+#undef GP_REAL_GEOMETRY_CALC
+#undef ZOOM_APPLY
+
 static void
-_part_recalc_apply(Ws_Groupedit_Smart_Data *sd,
-                   Groupedit_Part *gp,
-                   int offset_x,
-                   int offset_y)
+_part_calc(Ws_Groupedit_Smart_Data *sd, Groupedit_Part *gp)
 {
    Evas_Coord x, y, xe, ye, w, h;
-   Evas_Coord part_x, part_y, abs_x, abs_y;
 
    assert(sd != NULL);
    assert(gp != NULL);
@@ -815,18 +816,13 @@ _part_recalc_apply(Ws_Groupedit_Smart_Data *sd,
    edje_object_part_geometry_get(sd->group->edit_object, gp->part->name, &x, 
&y, &w, &h);
    evas_object_geometry_get(sd->group->edit_object, &xe, &ye, NULL, NULL);
 
-   evas_object_resize(gp->draw, w, h);
-   evas_object_move(gp->draw, (x * sd->zoom_factor + xe + offset_x),
-                              (y * sd->zoom_factor + ye + offset_y));
-
-   if (gp->container)
-     {
-        evas_object_resize(gp->container, w, h);
-        evas_object_move(gp->container, (x * sd->zoom_factor + xe + offset_x),
-                         (y * sd->zoom_factor + ye + offset_y));
-     }
+   gp->geom.x = x + xe;
+   gp->geom.y = y + ye;
+   gp->geom.w = w;
+   gp->geom.h = h;
 
-   if (gp->part->type == EDJE_PART_TYPE_TEXT)
+   if ((gp->part->type == EDJE_PART_TYPE_TEXT) ||
+       (gp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
      {
         double x_align, y_align;
         const Evas_Object *ro;
@@ -835,7 +831,6 @@ _part_recalc_apply(Ws_Groupedit_Smart_Data *sd,
         evas_object_geometry_get(ro, NULL, NULL, &ro_w, &ro_h);
         evas_object_resize(gp->proxy_part, ro_w, ro_h);
 
-
         x_align = edje_edit_state_text_align_x_get(sd->group->edit_object,
                                                    gp->part->name,
                                                    
gp->part->current_state->parsed_name,
@@ -846,142 +841,76 @@ _part_recalc_apply(Ws_Groupedit_Smart_Data *sd,
                                                    
gp->part->current_state->parsed_val);
         evas_object_size_hint_align_set(gp->proxy_part, x_align, y_align);
      }
-
-
-   GP_REAL_GEOMETRY_CALC(part_x, part_y, abs_x, abs_y)
-
-   ZOOM_APPLY(gp->draw)
 }
 
-#undef GP_REAL_GEOMETRY_CALC
-#undef ZOOM_APPLY
+Eina_Bool
+_parts_recalc(Ws_Groupedit_Smart_Data *sd __UNUSED__)
+{
+   return false;
+}
 
 Eina_Bool
-_parts_recalc(Ws_Groupedit_Smart_Data *sd)
+_part_update(Ws_Groupedit_Smart_Data *sd, Groupedit_Part *gp)
 {
-   Eina_List *l;
-   Groupedit_Part *gp;
    Eina_Stringshare *str;
-   int i = 0, offset_x, offset_y;
 
    assert(sd != NULL);
 
    if (!sd->parts) return false;
 
    evas_object_geometry_get(sd->obj, &sd->real_size->x,
-                                     &sd->real_size->y,
-                                     &sd->real_size->w,
-                                     &sd->real_size->h);
-   DBG("Recalc %p object. Object parts count: %d", sd->obj, 
eina_list_count(sd->parts))
+                            &sd->real_size->y,
+                            &sd->real_size->w,
+                            &sd->real_size->h);
 
-   EINA_LIST_FOREACH(sd->parts, l, gp)
-     {
-        offset_x = i * SEP_ITEM_PAD_X;
-        offset_y = i * SEP_ITEM_PAD_Y;
-
-        if (sd->separated)
-          {
-             i++;
-             if (!gp->item)
-               {
-                  gp->item = edje_object_add(sd->e);
-                  if (!edje_object_file_set(gp->item, EFLETE_EDJ, 
"eflete/group/item/default"))
-                    ERR("Could not load style of part's item!");
-                  evas_object_event_callback_add(gp->item, 
EVAS_CALLBACK_MOUSE_DOWN,
-                                                 
_part_separete_mod_mouse_click_cb, gp);
-                  evas_object_event_callback_add(gp->item, 
EVAS_CALLBACK_MOUSE_IN,
-                                                 
_part_separete_mod_mouse_in_cb, gp);
-                  evas_object_event_callback_add(gp->item, 
EVAS_CALLBACK_MOUSE_OUT,
-                                                 
_part_separete_mod_mouse_out_cb, gp);
-                  evas_object_smart_member_add(gp->item, sd->obj);
-                  evas_object_show(gp->item);
-               }
-          }
-        else
-          {
-             if (gp->item)
-               {
-                  evas_object_hide(gp->item);
-                  evas_object_event_callback_del_full(gp->item, 
EVAS_CALLBACK_MOUSE_DOWN,
-                                                      
_part_separete_mod_mouse_click_cb, gp);
-                  evas_object_event_callback_del_full(gp->item, 
EVAS_CALLBACK_MOUSE_IN,
-                                                      
_part_separete_mod_mouse_in_cb, gp);
-                  evas_object_event_callback_del_full(gp->item, 
EVAS_CALLBACK_MOUSE_OUT,
-                                                      
_part_separete_mod_mouse_out_cb, gp);
-
-                  evas_object_smart_member_del(gp->item);
-                  evas_object_del(gp->item);
-                  gp->item = NULL;
-               }
-          }
 
-        switch (gp->part->type)
-          {
-           case EDJE_PART_TYPE_TEXT:
-           case EDJE_PART_TYPE_TEXTBLOCK:
-              str = edje_edit_state_text_get(sd->group->edit_object, 
gp->part->name,
-                                             
gp->part->current_state->parsed_name,
-                                             
gp->part->current_state->parsed_val);
-              if (!str)
-                edje_object_part_text_set(sd->group->edit_object, 
gp->part->name, gp->part->name);
-              eina_stringshare_del(str);
-              _common_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_RECTANGLE:
-           case EDJE_PART_TYPE_GROUP:
-              _common_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_IMAGE:
-              _image_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_PROXY:
-              _proxy_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_TABLE:
-              if (sd->manual_calc)
-                {
-                   _part_container_del(gp);
-                   _part_table_add(sd, gp);
-                }
-              _table_param_update(sd, gp);
-              _common_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_BOX:
-              if (sd->manual_calc)
-                {
-                   _part_container_del(gp);
-                   _part_box_add(sd, gp);
-                }
-              _box_param_update(sd, gp);
-              _common_param_update(gp, sd->group->edit_object);
-              break;
-           case EDJE_PART_TYPE_SPACER:
-           case EDJE_PART_TYPE_SWALLOW:
-           case EDJE_PART_TYPE_EXTERNAL:
-           default:
-              break;
-          }
-        _part_recalc_apply(sd, gp, offset_x, offset_y);
-        if (gp->part->visible)
-          {
-             evas_object_show(gp->bg);
-             evas_object_show(gp->draw);
-          }
-        else
-          {
-             evas_object_hide(gp->bg);
-             evas_object_hide(gp->draw);
-          }
-     }
-   if (!sd->separated) _part_object_area_calc(sd);
-   else
+   switch (gp->part->type)
      {
-        if (sd->to_select) _select_item_move_to_top(sd);
-        evas_object_hide(sd->obj_area.obj);
-        evas_object_smart_callback_call(sd->obj, SIG_OBJ_AREA_CHANGED, 
sd->obj_area.geom);
+      case EDJE_PART_TYPE_TEXT:
+      case EDJE_PART_TYPE_TEXTBLOCK:
+         str = edje_edit_state_text_get(sd->group->edit_object, gp->part->name,
+                                        gp->part->current_state->parsed_name,
+                                        gp->part->current_state->parsed_val);
+         if (!str)
+           edje_object_part_text_set(sd->group->edit_object, gp->part->name, 
gp->part->name);
+         eina_stringshare_del(str);
+         _common_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_RECTANGLE:
+      case EDJE_PART_TYPE_GROUP:
+         _common_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_IMAGE:
+         _image_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_PROXY:
+         _proxy_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_TABLE:
+         if (sd->manual_calc)
+           {
+              _part_container_del(gp);
+              _part_table_add(sd, gp);
+           }
+         _table_param_update(sd, gp);
+         _common_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_BOX:
+         if (sd->manual_calc)
+           {
+              _part_container_del(gp);
+              _part_box_add(sd, gp);
+           }
+         _box_param_update(sd, gp);
+         _common_param_update(gp, sd->group->edit_object);
+         break;
+      case EDJE_PART_TYPE_SPACER:
+      case EDJE_PART_TYPE_SWALLOW:
+      case EDJE_PART_TYPE_EXTERNAL:
+      default:
+         break;
      }
-
-   evas_object_smart_callback_call(sd->obj, SIG_GEOMETRY_CHANGED, (void 
*)sd->real_size);
+   //evas_object_smart_callback_call(sd->obj, SIG_GEOMETRY_CHANGED, (void 
*)sd->real_size);
 
    return true;
 }
@@ -998,7 +927,6 @@ _part_draw_add(Ws_Groupedit_Smart_Data *sd, Part_ *part)
    gp->part = part;
    gp->item = NULL;
 
-
 #define PART_VIEW_ADD() \
    gp->draw = elm_box_add(sd->parent); \
    elm_box_layout_set(gp->draw, evas_object_box_layout_stack, NULL, NULL); \
@@ -1007,7 +935,8 @@ _part_draw_add(Ws_Groupedit_Smart_Data *sd, Part_ *part)
    evas_object_size_hint_align_set(gp->layout, EVAS_HINT_FILL, 
EVAS_HINT_FILL); \
    elm_layout_theme_set(gp->layout, "layout", "groupview", "default"); \
    evas_object_show(gp->layout); \
-   elm_box_pack_end(gp->draw, gp->layout);
+   elm_box_pack_end(gp->draw, gp->layout); \
+   evas_object_show(gp->draw); \
 
 #define PART_VIEW_PROXY_SET() \
    gp->proxy_part = evas_object_image_filled_add(sd->e); \
@@ -1016,6 +945,7 @@ _part_draw_add(Ws_Groupedit_Smart_Data *sd, Part_ *part)
    elm_box_pack_end(gp->draw, gp->proxy_part); \
    evas_object_show(gp->proxy_part); \
 
+   elm_box_pack_end(sd->box, gp->draw);
    switch (part->type)
      {
       case EDJE_PART_TYPE_RECTANGLE:
@@ -1327,7 +1257,7 @@ _table_param_update(Ws_Groupedit_Smart_Data *sd, 
Groupedit_Part *gp)
 }
 
 static void
-_part_object_area_calc(Ws_Groupedit_Smart_Data *sd)
+_part_object_area_calc(Ws_Groupedit_Smart_Data *sd, Groupedit_Part *gp)
 {
    Eina_Stringshare *rel_to;
    int xc, yc, wc, hc;
@@ -1340,89 +1270,95 @@ _part_object_area_calc(Ws_Groupedit_Smart_Data *sd)
 
    assert(sd != NULL);
 
-   if (!sd->selected)
+   PART_STATE_GET(sd->group->edit_object, gp->part->name)
+   const char *name = gp->part->name;
+
+   evas_object_geometry_get(sd->group->edit_object, &xg, &yg, &wg, &hg);
+
+   xc = xg;
+   wc = wg;
+   rel_to = edje_edit_state_rel1_to_x_get(sd->group->edit_object, name, state, 
value);
+   relative = edje_edit_state_rel1_relative_x_get(sd->group->edit_object, 
name, state, value);
+   offset = edje_edit_state_rel1_offset_x_get(sd->group->edit_object, name, 
state, value);
+   if (rel_to)
      {
-        x = sd->con_current_size->x; y = sd->con_current_size->y;
-        w = sd->con_current_size->w; h = sd->con_current_size->h;
+        rel_part = _parts_list_find(sd->parts, rel_to);
+        edje_object_part_geometry_get(sd->group->edit_object, 
rel_part->part->name, &xc, NULL, &wc, NULL);
      }
-   else
+   x = (xc + (int)(wc * relative * sd->zoom_factor)) + offset;
+   edje_edit_string_free(rel_to);
+
+   yc = yg;
+   hc = hg;
+   rel_to = edje_edit_state_rel1_to_y_get(sd->group->edit_object, name, state, 
value);
+   relative = edje_edit_state_rel1_relative_y_get(sd->group->edit_object, 
name, state, value);
+   offset = edje_edit_state_rel1_offset_y_get(sd->group->edit_object, name, 
state, value);
+   if (rel_to)
      {
-        PART_STATE_GET(sd->group->edit_object, sd->selected->part->name)
-        const char *name = sd->selected->part->name;
-
-        evas_object_geometry_get(sd->group->edit_object, &xg, &yg, &wg, &hg);
-
-        xc = xg;
-        wc = wg;
-        rel_to = edje_edit_state_rel1_to_x_get(sd->group->edit_object, name, 
state, value);
-        relative = edje_edit_state_rel1_relative_x_get(sd->group->edit_object, 
name, state, value);
-        offset = edje_edit_state_rel1_offset_x_get(sd->group->edit_object, 
name, state, value);
-        if (rel_to)
-          {
-             rel_part = _parts_list_find(sd->parts, rel_to);
-             evas_object_geometry_get(rel_part->draw, &xc, NULL, &wc, NULL);
-          }
-        x = (xc + (int)(wc * relative * sd->zoom_factor)) + offset;
-        edje_edit_string_free(rel_to);
-
-        yc = yg;
-        hc = hg;
-        rel_to = edje_edit_state_rel1_to_y_get(sd->group->edit_object, name, 
state, value);
-        relative = edje_edit_state_rel1_relative_y_get(sd->group->edit_object, 
name, state, value);
-        offset = edje_edit_state_rel1_offset_y_get(sd->group->edit_object, 
name, state, value);
-        if (rel_to)
-          {
-             rel_part = _parts_list_find(sd->parts, rel_to);
-             evas_object_geometry_get(rel_part->draw, NULL, &yc, NULL, &hc);
-          }
-        y = (yc + (int)(hc * relative * sd->zoom_factor)) + offset;
-        edje_edit_string_free(rel_to);
-
-        xc = xg; wc = sd->con_current_size->w;
-        rel_to = edje_edit_state_rel2_to_x_get(sd->group->edit_object, name, 
state, value);
-        relative = edje_edit_state_rel2_relative_x_get(sd->group->edit_object, 
name, state, value);
-        offset = edje_edit_state_rel2_offset_x_get(sd->group->edit_object, 
name, state, value);
-        if (rel_to)
-          {
-             rel_part = _parts_list_find(sd->parts, rel_to);
-             evas_object_geometry_get(rel_part->draw, &xc, NULL, &wc, NULL);
-          }
-        w = ((xc - x) + (int)(wc * relative * sd->zoom_factor)) + offset;
-        if (w < 0) { x += w; w = 0; }
-        edje_edit_string_free(rel_to);
-
-        yc = yg; hc = sd->con_current_size->h;
-        rel_to = edje_edit_state_rel2_to_y_get(sd->group->edit_object, name, 
state, value);
-        relative = edje_edit_state_rel2_relative_y_get(sd->group->edit_object, 
name, state, value);
-        offset = edje_edit_state_rel2_offset_y_get(sd->group->edit_object, 
name, state, value);
-        if (rel_to)
-          {
-             rel_part = _parts_list_find(sd->parts, rel_to);
-             evas_object_geometry_get(rel_part->draw, NULL, &yc, NULL, &hc);
-          }
-        h = ((yc - y) + (int)(hc * relative * sd->zoom_factor)) + offset;
-        if (h < 0) { y += h; h = 0; }
-        edje_edit_string_free(rel_to);
+        rel_part = _parts_list_find(sd->parts, rel_to);
+        edje_object_part_geometry_get(sd->group->edit_object, 
rel_part->part->name, NULL, &yc, NULL, &hc);
+     }
+   y = (yc + (int)(hc * relative * sd->zoom_factor)) + offset;
+   edje_edit_string_free(rel_to);
+
+   xc = xg; wc = sd->con_current_size->w;
+   rel_to = edje_edit_state_rel2_to_x_get(sd->group->edit_object, name, state, 
value);
+   relative = edje_edit_state_rel2_relative_x_get(sd->group->edit_object, 
name, state, value);
+   offset = edje_edit_state_rel2_offset_x_get(sd->group->edit_object, name, 
state, value);
+   if (rel_to)
+     {
+        rel_part = _parts_list_find(sd->parts, rel_to);
+        edje_object_part_geometry_get(sd->group->edit_object, 
rel_part->part->name, &xc, NULL, &wc, NULL);
+     }
+   w = ((xc - x) + (int)(wc * relative * sd->zoom_factor)) + offset;
+   if (w < 0) { x += w; w = 0; }
+   edje_edit_string_free(rel_to);
+
+   yc = yg; hc = sd->con_current_size->h;
+   rel_to = edje_edit_state_rel2_to_y_get(sd->group->edit_object, name, state, 
value);
+   relative = edje_edit_state_rel2_relative_y_get(sd->group->edit_object, 
name, state, value);
+   offset = edje_edit_state_rel2_offset_y_get(sd->group->edit_object, name, 
state, value);
+   if (rel_to)
+     {
+        rel_part = _parts_list_find(sd->parts, rel_to);
+        edje_object_part_geometry_get(sd->group->edit_object, 
rel_part->part->name, NULL, &yc, NULL, &hc);
+     }
+   h = ((yc - y) + (int)(hc * relative * sd->zoom_factor)) + offset;
+   if (h < 0) { y += h; h = 0; }
+   edje_edit_string_free(rel_to);
 
-        evas_object_geometry_get(sd->obj, &xc, &yc, NULL, NULL);
+   PART_STATE_FREE
 
-        evas_object_resize(sd->obj_area.obj, w, h);
-        evas_object_move(sd->obj_area.obj, x, y);
-        evas_object_stack_below(sd->obj_area.obj, sd->selected->draw);
+   gp->object_area_geom.x = x;
+   gp->object_area_geom.y = y;
+   gp->object_area_geom.w = w;
+   gp->object_area_geom.h = h;
+}
 
-        PART_STATE_FREE
-     }
+void
+_parts_stack_layout(Evas_Object          *o __UNUSED__,
+                    Evas_Object_Box_Data *p __UNUSED__,
+                    void                 *data)
 
-   if (sd->obj_area.visible) evas_object_show(sd->obj_area.obj);
-   else evas_object_hide(sd->obj_area.obj);
+{
+   Ws_Groupedit_Smart_Data *sd = data;
+   Groupedit_Part *gp;
+   Eina_List *l;
 
-   sd->obj_area.geom->x = x; sd->obj_area.geom->y = y;
-   sd->obj_area.geom->w = w; sd->obj_area.geom->h = h;
+   DBG("Recalc %p object. Object parts count: %d", sd->obj, 
eina_list_count(sd->parts))
+   EINA_LIST_FOREACH(sd->parts, l, gp)
+     {
+        _part_object_area_calc(sd, gp);
+        _part_calc(sd, gp);
+        _part_update(sd, gp);
 
-   if ((sd->selected) && ((sd->obj_area.visible)))
-     evas_object_show(sd->obj_area.obj);
-   else
-     evas_object_hide(sd->obj_area.obj);
+        evas_object_resize(gp->draw, gp->geom.w, gp->geom.h);
+        evas_object_move(gp->draw, gp->geom.x, gp->geom.y);
 
-   evas_object_smart_callback_call(sd->obj, SIG_OBJ_AREA_CHANGED, 
sd->obj_area.geom);
+        if (gp->container)
+          {
+             evas_object_resize(gp->container, gp->geom.w, gp->geom.h);
+             evas_object_move(gp->container, gp->geom.x, gp->geom.y);
+          }
+     }
 }
diff --git a/src/bin/ui/workspace/groupedit_private.h 
b/src/bin/ui/workspace/groupedit_private.h
index bc2bf10..27d3fa3 100644
--- a/src/bin/ui/workspace/groupedit_private.h
+++ b/src/bin/ui/workspace/groupedit_private.h
@@ -61,6 +61,7 @@ struct _Ws_Groupedit_Smart_Data
    Evas_Object *event;
    Evas_Object *container;
    Evas_Object *parent;
+   Evas_Object *box;
    /* Paddings which solve scroller issue,
       when container data move to 0,0 coords */
    struct {
@@ -138,6 +139,8 @@ struct _Ws_Groupedit_Smart_Data
 struct _Groupedit_Part
 {
    Part_ *part;               /**< Pointer to part */
+   Groupedit_Geom geom;
+   Groupedit_Geom object_area_geom;
    Evas_Object *bg;           /**< The background, uses for container parts 
TABLE or BOX */
    Evas_Object *draw;         /**< The evas primitive to be draw in groupedit.
                                    The valid evas object types: image, 
rectangle,
@@ -187,6 +190,11 @@ Eina_Bool
 _edit_object_part_item_del(Ws_Groupedit_Smart_Data *sd, Eina_Stringshare *part,
                            Eina_Stringshare *item);
 
+void /* custom 'diagonal' layout */
+_parts_stack_layout(Evas_Object          *o,
+                    Evas_Object_Box_Data *p,
+                    void                 *data);
+
 /**
  * Stack part above above in groupedit module.
  * If part_above param is NULL, then part will restack above by one position,

-- 


Reply via email to