rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=835074846f2f5118eaebed13d3bf1f84f07a643d

commit 835074846f2f5118eaebed13d3bf1f84f07a643d
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Wed Dec 9 17:20:59 2015 +0200

    groupedit: calculate part protrusion
    
    Protrusion values it's distinction of object geomentry, what
    calculated by smart object and real drawed geometry.
    The real drawed object geomentry needed for correct zoom.
    
    Change-Id: I65e6bfa23936eda6b08a4f29c85c5a38ec260a75
---
 src/bin/ui/workspace/groupedit.c         |  8 ++++++++
 src/bin/ui/workspace/groupedit.h         | 14 ++++++++++++++
 src/bin/ui/workspace/groupedit_calc.c    | 18 ++++++++++++++++--
 src/bin/ui/workspace/groupedit_private.h |  1 +
 4 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/src/bin/ui/workspace/groupedit.c b/src/bin/ui/workspace/groupedit.c
index bdce63a..9a91203 100644
--- a/src/bin/ui/workspace/groupedit.c
+++ b/src/bin/ui/workspace/groupedit.c
@@ -501,6 +501,14 @@ groupedit_edit_object_part_item_selected_set(Evas_Object 
*obj,
      }
 }
 
+const Groupedit_Geom *
+groupedit_protrusion_get(Evas_Object *obj)
+{
+   WS_GROUPEDIT_DATA_GET(obj, sd);
+
+   return &sd->protrusion;
+}
+
 #undef MY_CLASS_NAME
 #undef WS_GROUPSPACE_DATA_GET
 #undef WS_GROUPEDIT_DATA_GET_OR_RETURN_VAL
diff --git a/src/bin/ui/workspace/groupedit.h b/src/bin/ui/workspace/groupedit.h
index 4858c56..32f68ae 100644
--- a/src/bin/ui/workspace/groupedit.h
+++ b/src/bin/ui/workspace/groupedit.h
@@ -347,4 +347,18 @@ groupedit_edit_object_part_item_selected_set(Evas_Object 
*obj,
                                              Eina_Stringshare *item_name,
                                              Eina_Bool selected);
 
+/**
+ * Protrusion values it's distinction of object geomentry, what calculated by
+ * smart object and real drawed geometry. The real drawed object geomentry
+ * needed for correct zoom.
+ *
+ * @param obj The groupedit object.
+ *
+ * @return The protrusion values.
+ *
+ * @ingroup Groupedit
+ */
+const Groupedit_Geom *
+groupedit_protrusion_get(Evas_Object *obj);
+
 #endif /* GROUPEDIT_H */
diff --git a/src/bin/ui/workspace/groupedit_calc.c 
b/src/bin/ui/workspace/groupedit_calc.c
index 1da3330..1fc71c3 100644
--- a/src/bin/ui/workspace/groupedit_calc.c
+++ b/src/bin/ui/workspace/groupedit_calc.c
@@ -577,19 +577,29 @@ _part_container_del(Groupedit_Part *gp)
 static void
 _part_calc(Ws_Groupedit_Smart_Data *sd, Groupedit_Part *gp)
 {
-   Evas_Coord x, y, xe, ye, w, h;
+   Evas_Coord x, y, xe, ye, w, h, we, he;
+   int protrusion;
 
    assert(sd != NULL);
    assert(gp != NULL);
 
    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_geometry_get(sd->group->edit_object, &xe, &ye, &we, &he);
 
    gp->geom.x = x + xe;
    gp->geom.y = y + ye;
    gp->geom.w = w;
    gp->geom.h = h;
 
+   protrusion = abs((x <= 0) ? x : 0);
+   sd->protrusion.x = (protrusion > sd->protrusion.x) ? protrusion : 
sd->protrusion.x;
+   protrusion = abs((y <= 0) ? y : 0);
+   sd->protrusion.y = (protrusion > sd->protrusion.y) ? protrusion : 
sd->protrusion.y;
+   protrusion = ((x + w) > he) ? (x + w - we) : 0;
+   sd->protrusion.w = (protrusion > sd->protrusion.w) ? protrusion : 
sd->protrusion.w;
+   protrusion = ((y + h) > he) ? (y + h - he) : 0;
+   sd->protrusion.h = (protrusion > sd->protrusion.h) ? protrusion : 
sd->protrusion.h;
+
    if ((gp->part->type == EDJE_PART_TYPE_TEXT) ||
        (gp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
      {
@@ -1080,6 +1090,10 @@ _parts_stack_layout(Evas_Object          *o __UNUSED__,
    Eina_List *l;
 
    DBG("Recalc %p object. Object parts count: %d", sd->obj, 
eina_list_count(sd->parts))
+   sd->protrusion.x = 0;
+   sd->protrusion.y = 0;
+   sd->protrusion.w = 0;
+   sd->protrusion.h = 0;
    EINA_LIST_FOREACH(sd->parts, l, gp)
      {
         _part_object_area_calc(sd, gp);
diff --git a/src/bin/ui/workspace/groupedit_private.h 
b/src/bin/ui/workspace/groupedit_private.h
index e685058..fbd377c 100644
--- a/src/bin/ui/workspace/groupedit_private.h
+++ b/src/bin/ui/workspace/groupedit_private.h
@@ -62,6 +62,7 @@ struct _Ws_Groupedit_Smart_Data
    Evas_Object *parent;
    Evas_Object *box;
    Groupedit_Geom geom;
+   Groupedit_Geom protrusion;
    Eina_List *parts;
    Groupedit_Part *selected;
    Evas_Object *clipper;

-- 


Reply via email to