On Wed, 3 Jul 2024 05:20:02 GMT, Harshitha Onkar <hon...@openjdk.org> wrote:

>> Currently the bug described in the issue is that the colors of the 
>> TextComponents do not change when setting TextComponents to uneditable. The 
>> default uneditable color (SystemColor.control) happens to be the same as the 
>> default for the editable color for some L&Fs, so the fix may not be 
>> initially noticeable. However, the bug still exists where the the color is 
>> not being changed when changing between editable and uneditable. You can 
>> check by changing TextComponent.getBackground() code to return Color.GRAY on 
>> line 342 and you can see that TextComponents are not changing to a gray 
>> background when set to uneditable.
>> 
>> This fix adds a private setBackground method in TextComponent so that 
>> TextArea and TextField can change the background color to the correct color 
>> (SystemColor.control) when set uneditable by overriding the TextComponent 
>> setEditable. You can verify the fix by changing this color to Color.GRAY and 
>> verifying the backgrounds change to gray when the TextComponents are 
>> disabled.
>
> src/java.desktop/share/classes/java/awt/TextArea.java line 615:
> 
>> 613:         Color defaultBackground = 
>> UIManager.getColor("TextArea.background");
>> 614:         if (!backgroundSetByClientCode) {
>> 615:             setBackground(b ? defaultBackground : SystemColor.control, 
>> false);
> 
> Is there a reason behind choosing `SystemColor.control` as the default 
> TextComponent system color?
> I see another option `SystemColor.text` - the description sounds more close 
> to the background color of text components.

the SystemColor.control comes from the docs on TextComponent.setEditable

     * If the flag is set to {@code true}, this text component
     * becomes user editable. If the flag is set to {@code false},
     * the user cannot change the text of this text component.
     * By default, non-editable text components have a background color
     * of SystemColor.control.  This default can be overridden by
     * calling setBackground.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19876#discussion_r1664909788

Reply via email to