xartigas pushed a commit to branch master.

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

commit e013480e7a0ae11a9363f9a207cf63e3bb7f5423
Author: Yeongjong Lee <clean...@naver.com>
Date:   Tue Mar 5 09:12:52 2019 +0100

    ui.box, ui.table: respect parent hint size min
    
    Summary:
    This patch fixes issue that parent hint size min is ignored when it is 
greater
    than children hint size min sum.
    
    Thanks to segfaultxavi for reporting this.
    
    Test Plan:
    1. make check
    2. 'hello-gui' or 'texteditor' example in examples.git
    
    Reviewers: segfaultxavi, zmike
    
    Reviewed By: segfaultxavi
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D8098
---
 src/lib/elementary/efl_ui_box_layout.c       | 3 +++
 src/lib/elementary/efl_ui_container_layout.c | 4 ++++
 src/lib/elementary/efl_ui_container_layout.h | 1 +
 src/lib/elementary/efl_ui_table_layout.c     | 5 +++++
 src/tests/elementary/efl_ui_test_box.c       | 1 +
 src/tests/elementary/efl_ui_test_table.c     | 1 +
 6 files changed, 15 insertions(+)

diff --git a/src/lib/elementary/efl_ui_box_layout.c 
b/src/lib/elementary/efl_ui_box_layout.c
index bc9ea63c86..c66a1a8c2e 100644
--- a/src/lib/elementary/efl_ui_box_layout.c
+++ b/src/lib/elementary/efl_ui_box_layout.c
@@ -199,5 +199,8 @@ _efl_ui_box_custom_layout(Efl_Ui_Box *ui_box, 
Evas_Object_Box_Data *bd)
    want[1] += (box_calc[1].margin[0] + box_calc[1].margin[1]) +
               (box_calc[1].pad * (count - 1));
 
+   if (want[0] < box_calc[0].min) want[0] = box_calc[0].min;
+   if (want[1] < box_calc[1].min) want[1] = box_calc[1].min;
+
    efl_gfx_hint_size_min_set(ui_box, EINA_SIZE2D(want[0], want[1]));
 }
diff --git a/src/lib/elementary/efl_ui_container_layout.c 
b/src/lib/elementary/efl_ui_container_layout.c
index e8c5979dd0..4fbdc07b91 100644
--- a/src/lib/elementary/efl_ui_container_layout.c
+++ b/src/lib/elementary/efl_ui_container_layout.c
@@ -112,10 +112,14 @@ _efl_ui_container_layout_init(Eo* obj, 
Efl_Ui_Container_Layout_Calc *calc)
 {
    Eina_Rect geom;
    Eina_Bool pad_scalable;
+   Eina_Size2D min;
 
    geom = efl_gfx_entity_geometry_get(obj);
    efl_gfx_hint_margin_get(obj, &calc[0].margin[0], &calc[0].margin[1],
                                      &calc[1].margin[0], &calc[1].margin[1]);
+   min = efl_gfx_hint_size_combined_min_get(obj);
+   calc[0].min = min.w;
+   calc[1].min = min.h;
    calc[0].scale = calc[1].scale = efl_gfx_entity_scale_get(obj);
 
    efl_pack_padding_get(obj, &calc[0].pad, &calc[1].pad, &pad_scalable);
diff --git a/src/lib/elementary/efl_ui_container_layout.h 
b/src/lib/elementary/efl_ui_container_layout.h
index 097abee13b..85d3695e9d 100644
--- a/src/lib/elementary/efl_ui_container_layout.h
+++ b/src/lib/elementary/efl_ui_container_layout.h
@@ -28,6 +28,7 @@ struct _Efl_Ui_Container_Layout_Calc
 {
    int pos;
    int size;
+   int min;
    int margin[2];
    double align;
    double scale;
diff --git a/src/lib/elementary/efl_ui_table_layout.c 
b/src/lib/elementary/efl_ui_table_layout.c
index b3009e9f7c..f017b33b9d 100644
--- a/src/lib/elementary/efl_ui_table_layout.c
+++ b/src/lib/elementary/efl_ui_table_layout.c
@@ -368,6 +368,11 @@ _efl_ui_table_custom_layout(Efl_Ui_Table *ui_table, 
Efl_Ui_Table_Data *pd)
                          + (table_calc.layout_calc[1].pad *
                             table_calc.cell_calc[1][rows - 1].index);
 
+   if (table_calc.want[0] < table_calc.layout_calc[0].min)
+     table_calc.want[0] = table_calc.layout_calc[0].min;
+   if (table_calc.want[1] < table_calc.layout_calc[1].min)
+     table_calc.want[1] = table_calc.layout_calc[1].min;
+
    efl_gfx_hint_size_min_set(ui_table, EINA_SIZE2D(table_calc.want[0],
                                                    table_calc.want[1]));
 }
diff --git a/src/tests/elementary/efl_ui_test_box.c 
b/src/tests/elementary/efl_ui_test_box.c
index af4eab0874..ee6532226c 100644
--- a/src/tests/elementary/efl_ui_test_box.c
+++ b/src/tests/elementary/efl_ui_test_box.c
@@ -187,6 +187,7 @@ static void
 btn_hint_set(Eo *btn, Hint *hint)
 {
    efl_gfx_entity_size_set(layout, hint->layout_size);
+   efl_gfx_hint_size_min_set(layout, hint->layout_size);
    efl_gfx_hint_size_max_set(btn, hint->max);
    efl_gfx_hint_size_min_set(btn, hint->min);
    efl_gfx_hint_weight_set(btn, hint->weightx, hint->weighty);
diff --git a/src/tests/elementary/efl_ui_test_table.c 
b/src/tests/elementary/efl_ui_test_table.c
index 467208e651..66443efa6b 100644
--- a/src/tests/elementary/efl_ui_test_table.c
+++ b/src/tests/elementary/efl_ui_test_table.c
@@ -212,6 +212,7 @@ static void
 btn_hint_set(Eo *btn, Hint *hint)
 {
    efl_gfx_entity_size_set(layout, hint->layout_size);
+   efl_gfx_hint_size_min_set(layout, hint->layout_size);
    efl_gfx_hint_size_max_set(btn, hint->max);
    efl_gfx_hint_size_min_set(btn, hint->min);
    efl_gfx_hint_margin_set(btn, hint->marginl, hint->marginr,

-- 


Reply via email to