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