- unsigned n_lines = min(lines.size(), max((parent.h-margin.top-margin.bottom)/line_spacing, 1U));
- first_row = min(first_row, lines.size()-n_lines);
+ unsigned fit_height = parent.h-margin.top-margin.bottom+line_spacing-line_height;
+ unsigned n_lines = min<unsigned>(lines.size(), max(fit_height/line_spacing, 1U));
+ fit_height = line_height+(n_lines-1)*line_spacing;
+ first_row = min<unsigned>(first_row, lines.size()-n_lines);