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
This commit is contained in:
Yeongjong Lee 2019-03-05 09:12:52 +01:00 committed by Xavi Artigas
parent 40bc81ae2b
commit e013480e7a
6 changed files with 15 additions and 0 deletions

View File

@ -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]));
}

View File

@ -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);

View File

@ -28,6 +28,7 @@ struct _Efl_Ui_Container_Layout_Calc
{
int pos;
int size;
int min;
int margin[2];
double align;
double scale;

View File

@ -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]));
}

View File

@ -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);

View File

@ -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,