[NETBEANS-1261] Avoid a rendering artifact under Aqua tabs on Retina #884
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit gets rid of a thin grey line that appears under the active
tabcontrol tab when using the default Aqua LAF on MacOS retina (2x scaled)
screens. See screenshot attached to the JIRA ticket and pull request.
AquaEditorTabCellRenderer.AquaPainter.getInteriorPolygon previously returned a
rectangle whose bottom two points were at Y coordinate (y + height - 1).
Presumably this was meant to ensure that a point at (0, y + height) would not be
considered "inside" the rectangle. That's already the case when the bottom two
points are added at (y + height) and in the order used here, however. And on
Retina displays, subtracting 1 causes trouble in painting because each logical
pixel corresponds to two, not one, physical pixels. Looking through call sites of
getInteriorPolygon, it should be safe to remove the "-1" adjustment. There are
other LAFs that don't include it either.
Tested on MacOS both with and without Retina enabled, to make sure there are no
new tab control bugs resulting from the fix. Tested clicking around the tab
control tab, and dragging and dropping tabs.