diff --git a/libs/ui/source/grid_layout.cpp b/libs/ui/source/grid_layout.cpp index e910f573..fc683cef 100644 --- a/libs/ui/source/grid_layout.cpp +++ b/libs/ui/source/grid_layout.cpp @@ -180,7 +180,7 @@ namespace psemek::ui auto const & column_size = row_column_size.second; geom::box result{{{0.f, 0.f}, {0.f, 0.f}}}; - geom::box unit = geom::box::full(); + geom::box 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(1, row_count()) + (outer_margin_ ? 1 : -1)); int const margin_column_count = (std::max(1, column_count()) + (outer_margin_ ? 1 : -1));