Fix grid_layout size computation in case all rows/columns are minimized

This commit is contained in:
Nikita Lisitsa 2022-03-12 18:01:30 +03:00
parent a3cda92f4c
commit e568ecf14c

View file

@ -180,7 +180,7 @@ namespace psemek::ui
auto const & column_size = row_column_size.second;
geom::box<float, 2> result{{{0.f, 0.f}, {0.f, 0.f}}};
geom::box<float, 2> unit = geom::box<float, 2>::full();
geom::box<float, 2> unit{{{0.f, inf}, {0.f, inf}}};
float sum_row_weights = 0.f;
float sum_column_weights = 0.f;
@ -209,10 +209,18 @@ namespace psemek::ui
sum_column_weights += column_weight_[i];
}
result[1].min += unit[1].min * sum_row_weights;
result[1].max += unit[1].max * sum_row_weights;
result[0].min += unit[0].min * sum_column_weights;
result[0].max += unit[0].max * sum_column_weights;
// prevent (inf * 0.f)
if (sum_row_weights > 0.f)
{
result[1].min += unit[1].min * sum_row_weights;
result[1].max += unit[1].max * sum_row_weights;
}
if (sum_column_weights > 0.f)
{
result[0].min += unit[0].min * sum_column_weights;
result[0].max += unit[0].max * sum_column_weights;
}
int const margin_row_count = (std::max<int>(1, row_count()) + (outer_margin_ ? 1 : -1));
int const margin_column_count = (std::max<int>(1, column_count()) + (outer_margin_ ? 1 : -1));