cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4290567fd67cee39a3e36fddf0dc526190250724

commit 4290567fd67cee39a3e36fddf0dc526190250724
Author: Subodh Kumar <s7158.ku...@samsung.com>
Date:   Sun Oct 4 15:23:49 2015 +0200

    evas_box: fix children size and position calculation when padding is used 
for horizontal flow layout
    
    Summary:
    Fix children size and position calculation when padding is used
    
    For each child size calculation padding is adjusted
    but box height should include  padding.
    Secondly, x and y position of children should not  include
    the vertical and horizonatal padding as child size has already
    included the given paddings.
    
    @fix
    
    Test Plan:
    Please modify test_box.c file in
    function test_box_vert2 as follows:
    
       bx = elm_box_add(win);
       evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
       elm_win_resize_object_add(win, bx);
       elm_box_padding_set(bx, 50, 50);
       elm_box_layout_set(bx, evas_object_box_layout_flow_horizontal, NULL, 
NULL);
       evas_object_show(bx);
    
    Now,
    1. open elementary_test
    2. box
    3. Box vert 2 (observe box is broken)
    4. Try resizing the window (observe)
    
    Reviewers: raster, cedric
    
    Reviewed By: cedric
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D3049
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/evas/canvas/evas_object_box.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_box.c 
b/src/lib/evas/canvas/evas_object_box.c
index a33a9e4..3510fb0 100644
--- a/src/lib/evas/canvas/evas_object_box.c
+++ b/src/lib/evas/canvas/evas_object_box.c
@@ -1333,7 +1333,7 @@ _evas_box_layout_flow_horizontal(Eo *o, 
Evas_Object_Box_Data *priv, Evas_Object_
      (priv, w, &row_count, row_max_h, row_break, row_width, &offset_y, &min_w, 
&max_h);
 
    inc_y = 0;
-   remain_y = h - (offset_y + max_h);
+   remain_y = h - (priv->pad.v * row_count -1) - (offset_y + max_h);
 
    if (remain_y > 0)
      {
@@ -1353,7 +1353,7 @@ _evas_box_layout_flow_horizontal(Eo *o, 
Evas_Object_Box_Data *priv, Evas_Object_
         int row_size, remain_x;
 
         row_size = row_break[r] - i;
-        remain_x = (w - row_width[r]);
+        remain_x = (w - (row_width[r] - priv->pad.h));
 
         if (priv->align.h < 0.0)
           {
@@ -1403,6 +1403,9 @@ _evas_box_layout_flow_horizontal(Eo *o, 
Evas_Object_Box_Data *priv, Evas_Object_
         evas_object_geometry_get(o, &x, NULL, NULL, NULL);
         min_h += row_max_h[r];
         y += row_max_h[r] + inc_y;
+
+        if (r > 0)
+          min_h += priv->pad.v;
      }
 
    evas_object_size_hint_min_set(o, min_w, min_h);

-- 


Reply via email to