void CalculateGroupsLayout (Size item_size, int y_spacing, int y_origin)
{
int y = y_origin;
bool details = view == View.Details;
for (int i = 0; i < groups.InternalCount; i++) {
ListViewGroup group = groups.GetInternalGroup (i);
if (group.ItemCount == 0)
continue;
y += LayoutGroupHeader (group, y, item_size.Height, y_spacing, details ? group.ItemCount : group.rows);
}
layout_ht = y; // Update height taking into account Groups' headers heights
}