Fix sizing issues with datagrid headers and bodies.

Review Request #10743 — Created Oct. 4, 2019 and submitted — Latest diff uploaded

Information

Djblets
release-1.0.x
9c4a166...

Reviewers

Datagrids had some off-by-0.5px issues that created tiny gaps to the
right of datagrid headers and bodies, leaving a little visual noise on
high-DPI displays. We had attempted to work around this in the past, but
it relied on older behavior in jQuery that rounded pixels, which wasn't
safe and regressed when we upgraded jQuery a while back. We now round
this ourselves, ensuring we're using a suitable size.

We also had a much larger gap on the right-hand side of the header when
the body had a scrollbar visible. This was caused by us fetching the
width of the datagrid body using height() instead of outerHeight(),
which meant the scrollbar wasn't being factored in.

Those calculations also fell apart on datagrids without column
customization. We were always updating the second-to-last column to take
the extra width intended for the scrollbar, assuming that that column
was the last data column and that the last actual column was the Edit
Columns icon. We now check whether the datagrid offers column
customization, adjusting the index of the last data column accordingly.

Tested on datagrids with and without scrollbars, and datagrids with
and without column customization.