On Fri, 3 Feb 2023 19:56:18 GMT, Damon Nguyen <[email protected]> wrote:
>> Before the fix, a JComboBox in Nimbus L&F would have normal black text even
>> when the JComboBox was disabled if SynthComboBoxRenderer was replaced with a
>> DefaultListCellRenderer. This text should be greyed out like in other L&F's.
>> When looking into the defaults for Nimbus L&F files for attributes and
>> states of a JComboBox, it confirm that the intention for disabled
>> JComboBoxes is nimbusDisabledText (which is grey text).
>>
>> SynthComboBoxes have an additional check in its default
>> SynthComboBoxRenderer that enables/disables the renderer itself. The
>> SynthComboBoxRenderer inherits its enabled state from the parent ComboBox.
>> Since the renderer with DefaultListCellRenderer is in a separate class
>> without a reference to the comboBox, a listener was added to SynthComboBoxUI.
>>
>> An additional issue occurred in DefaultListCellRenderer because the renderer
>> overrode the listener's re-assigned enabled state. In testing, setting the
>> enabled state in DefaultListCellRenderer is redundant for all L&F's and is
>> not needed here. However, instead of removing it altogether, a conditional
>> was added specifically to allow ComboBoxes to skip setting enabled state
>> here.
>>
>> After the fix, the Nimbus JComboBox with DLCR set matches the appearance of
>> a normal Nimbus JComboBox. I can enable/disable the JComboBoxes in the test,
>> and the UI elements behave and appear as expected.
>
> Damon Nguyen has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Simplify Nimbus LAF check
test/jdk/javax/swing/JComboBox/DisabledComboBoxFontTest.java line 53:
> 51:
> 52: private static JFrame frame;
> 53: private static boolean hasNimbus;
`hasNimbus `variable is unused now, can be removed.
test/jdk/javax/swing/JComboBox/DisabledComboBoxFontTest.java line 118:
> 116:
> UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
> 117: }
> 118: catch (Exception e) {
Just a suggestion, try-catch block can be like
try {
...
} catch {
...
}
-------------
PR: https://git.openjdk.org/jdk/pull/12390