Fix #2134 Horizontal scroll bar covers up last row.

now WHEN_NEEDED really acts like ALWAYS when the scrollbar is shown.
So the viewport is different, and the sudden scrollbar widths and
heights are set and used in calculations for the various widths and
heights