RFR: 8302173: Button border overlaps with button icon on macOS system LaF [v3]

SWinxy duke at openjdk.org
Tue Feb 21 23:13:28 UTC 2023


On Tue, 14 Feb 2023 23:02:16 GMT, Damon Nguyen <dnguyen at openjdk.org> wrote:

>> Previous fix to HTML in AquaButtonUI fixed spacing issue for HTML images in a JButton in Aqua L&F. The new issue comes from having text inside the HTML as the button's text. If an icon is used, this icon exceeds the bounds of the button and overlaps the border.
>> 
>> Added additional logic to check if HTML contains an img. If so, apply the previous fix. Otherwise, the original implementation for Aqua's JButton HTML layout works correctly, so use this behavior.
>> 
>> Added a test based on the provided test in the bug report. Automated the test using a BufferedImage and changed the icon color to RED. Tested with multiple runs on Aqua L&F, and the test passes with the update where it fails without the update.
>
> Damon Nguyen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add instanceof check

Changes requested by SWinxy at github.com (no known OpenJDK username).

src/java.desktop/macosx/classes/com/apple/laf/AquaButtonUI.java line 344:

> 342:         final View v = (View)c.getClientProperty(BasicHTML.propertyKey);
> 343:         if (v != null && c instanceof AbstractButton
> 344:                 && ((AbstractButton) c).getIcon() == null) {

We already know for certain that `c` is an AbstractButton. The first thing in the paint call, the component is casted. Why cast again when we can reuse the variable:
Suggestion:

        if (v != null && b.getIcon() == null) {


(also on ln 309 we could do the same thing)

-------------

PR: https://git.openjdk.org/jdk/pull/12520



More information about the client-libs-dev mailing list