On Thu, 25 Mar 2021 06:44:10 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

>> Hi All,
>> Please review the following fix for jdk17.
>> 
>> Issue : LookAndFeel.installProperty(list, "opaque", false) is not able to 
>> set the opaque property for JList and JTable.
>> LookAndFeel.installProperty calls the setUIProperty, and setUIProperty 
>> checks for OPAQUE_SET to change the opaque property as requested by the 
>> client.
>> OPAQUE_SET is always set to true when there is call to setOpaque(boolean).So 
>> when the constructor calls setOpaque(true) OPAQUE_SET is set to true and 
>> wont allow the setUIProperty to change the opaque property.
>> installProperty should work as the opaque property is not set by the client.
>> 
>> Fix. Fix is to remove the call to the setOpaque() from the constructor of 
>> JList and JTable. This will allow the client to change the opaque property 
>> calling LookAndFeel.installProperty() when the property is already not set.
>> 
>> Test : Added a  test  to check the same. Also tested internal tests which 
>> all are passing.
>> Link is in JBS.
>
> test/jdk/javax/swing/JList/TestOpaqueListTable.java line 38:
> 
>> 36: 
>> 37:     public static void main(String[] args) throws Exception {
>> 38:         UIManager.LookAndFeelInfo[] installedLookAndFeels;
> 
> I did not look close to the fix, but you need to check that the default value 
> of the "opaque" property will not be changed. So all default L&F will set it 
> to true, as before the fix.

Yeah, the default value for "opaque" property will not be changed.
It will be true for All L&F after the fix as well , I will add  that check to 
the test.

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

PR: https://git.openjdk.java.net/jdk/pull/3167

Reply via email to