RFR: 8355203: AquaButtonUI and AquaRootPaneUI repaint default button unnecessarily

Jeremy Wood duke at openjdk.org
Mon Apr 21 19:57:23 UTC 2025


This removes the constant repainting of the AquaRootPaneUI's default button.

A long time ago (before Mac OS Yosemite, around 2014) this was needed to match Aqua's native experience. But the default button no longer pulses, so we don't need to repaint ("pulse") the button continually.

Here's a clip from a YouTube video I found demonstrating the pulsing effect that this PR removes (you may want to turn your volume off):

https://github.com/user-attachments/assets/496bc003-ccba-4178-81bc-765e96d94316

This PR includes a test, but this test has never failed. (That is: this PR does not resolve a failing test.) This test would fail if the default button ever looked the same as a non-default button.

My primary goal here was to remove the AquaButtonUI's AncestorListener, but while we're here we might as well remove the AquaRootPaneUI's timer and other cleanup.

I tried and failed to rename the `private static final byte _pulsed` constant. (More details [here](https://github.com/openjdk/jdk/commit/89d0689f226b9e883df464e6f3e8c20074970499).) If anyone has suggestions for how to rename that without errors please let me know.

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

Commit messages:
 - 8344697: code cleanup for PR
 - 8344697: avoid state.set(Animating.YES) for default buttons
 - 8344697: Removing performance-based test
 - 8344697: trivial code cleanup for PR
 - Merge branch 'master' into JDK-8344697
 - Merge branch 'master' of https://github.com/mickleness/jdk
 - Merge branch 'master' of https://github.com/mickleness/jdk
 - Merge branch 'openjdk:master' into master
 - Merge branch 'openjdk:master' into master
 - Merge branch 'master' into JDK-8344697
 - ... and 9 more: https://git.openjdk.org/jdk/compare/128f2d1c...b8a0d31d

Changes: https://git.openjdk.org/jdk/pull/24778/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24778&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8355203
  Stats: 368 lines in 5 files changed: 234 ins; 127 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/24778.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24778/head:pull/24778

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


More information about the client-libs-dev mailing list