On Wed, 23 Apr 2025 03:37:01 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

>> src/java.desktop/macosx/classes/apple/laf/JRSUIConstants.java line 197:
>> 
>>> 195:         public static final State PRESSED = new State(_pressed);
>>> 196:         @Native private static final byte _pulsed = 5;
>>> 197:         public static final State DEFAULTBUTTON = new State(_pulsed);
>> 
>> Is it still necessary to use the pulse property from JRS, or can we treat 
>> this button like any other and rely on the standard active/inactive state?
>
> or default button appearance is different?

If I understand your question, I think the answer is:

Yes, the State.DEFAULTBUTTON constant is necessary for default JButtons to 
render correctly.

In case I misunderstood the question here is some additional context:

The only place `DEFAULTBUTTON` is referenced is here:

    protected State getButtonState(final AbstractButton b, final ButtonModel 
model) {
        if (!b.isEnabled()) return State.DISABLED;

        // The default button shouldn't draw its color when the window is 
inactive.
        // Changed for <rdar://problem/3614421>: Aqua LAF Buttons are 
incorrectly drawn disabled
        // all we need to do is make sure we aren't the default button any more 
and that
        // we aren't active, but we still are enabled if the button is enabled.
        // if we set dimmed we would appear disabled despite being enabled and 
click through
        // works so this now matches the text drawing and most importantly the 
HIG
        if (!AquaFocusHandler.isActive(b)) return State.INACTIVE;

        if (model.isArmed() && model.isPressed()) return State.PRESSED;
        if (model.isSelected() && isSelectionPressing()) return State.PRESSED;
        if ((b instanceof JButton) && ((JButton)b).isDefaultButton()) return 
State.DEFAULTBUTTON;

        return State.ACTIVE;
    }


I tried removing the line that returned `DEFAULTBUTTON`, but then the test 
attached to this PR failed; the default button rendered like a generic Aqua 
JButton. So we still need some mechanism to make sure default buttons paint 
correctly. In this branch: that mechanism is State.DEFAULTBUTTON.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24778#discussion_r2055262099

Reply via email to