for (Element<?> elem : elems) {
int col = ii % columns, row = ii / columns;
if (elem.isVisible() && _columns[col]._weight > 0) {
// TODO: supply sane y hint?
IDimension psize = preferredSize(elem, freeHintX, hintY);
metrics.rowHeights[row] = Math.max(metrics.rowHeights[row], psize.height());
metrics.columnWidths[col] = Math.max(metrics.columnWidths[col], psize.width());
}
ii += colspan(elem);
}