RFR: 8258970: Disabled JPasswordField foreground color is wrong with GTK LAF [v2]

Prasanta Sadhukhan psadhukhan at openjdk.org
Fri Sep 1 04:22:50 UTC 2023


On Mon, 21 Aug 2023 10:42:07 GMT, Abhishek Kumar <abhiscxk at openjdk.org> wrote:

>> Disabled JPasswordField foreground color was not grayed out in GTK LAF.
>> 
>> The foreground color in disabled state was close to black color (RGB 0,0,0) for password field which is not differentiable from enabled state foreground color.
>> 
>> To fix for this problem, the widget type is changed to `TEXT_AREA `for disable password field which returns the foreground color as gray. Checked with Oracle linux as well and fix worked fine.
>> 
>> An automated test case has been added and checked in CI, link is added in JBS. Test mentioned in JBS also works fine with the fix.
>
> Abhishek Kumar has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix extended for TextField, FormattedTextField, Spinner

src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c line 2413:

> 2411:             && state_type == GTK_STATE_INSENSITIVE && color_type == TEXT_FOREGROUND) {
> 2412:             widget_type = TEXT_AREA;
> 2413:         }

I guess l2403 has same checks which can be clubbed together

if (widget_type == TEXT_FIELD || widget_type == PASSWORD_FIELD
            || widget_type == SPINNER_TEXT_FIELD || widget_type == FORMATTED_TEXT_FIELD) {
        if (state_type == GTK_STATE_SELECTED && color_type == TEXT_BACKGROUND} 
            || state_type == GTK_STATE_INSENSITIVE && color_type == TEXT_FOREGROUND) {
            widget_type = TEXT_AREA;
    }
}


What do you think?

test/jdk/javax/swing/JPasswordField/TestDisabledPasswordFieldForegroundColor.java line 67:

> 65:         boolean testFail = false;
> 66:         robot = new Robot();
> 67:         robot.setAutoDelay(1000);

autoDelay normally is 100ms

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15263#discussion_r1312520289
PR Review Comment: https://git.openjdk.org/jdk/pull/15263#discussion_r1312520363


More information about the client-libs-dev mailing list