<Swing Dev> RFR: 8247753: UIManager.getSytemLookAndFeelClassName() returns wrong value on Fedora 32

Pankaj Bansal pankaj.b.bansal at oracle.com
Wed Aug 5 06:34:39 UTC 2020


Hello Prasanta,

Thanks for the review. Removed the check.

webrev: http://cr.openjdk.java.net/~pbansal/8247753/webrev01/ 
<http://cr.openjdk.java.net/%7Epbansal/8247753/webrev01/>

Regards,

Pankaj


On 05/08/20 10:46 AM, Prasanta Sadhukhan wrote:
>
> Looks ok to me.
>
> One observation is, in testcase you can remove line71 linux check as 
> we already did the check in l54.
>
> Regards
> Prasanta
> On 04-Aug-20 11:12 PM, Pankaj Bansal wrote:
>>
>> Hi All,
>>
>> Please review the following fix for jdk16.
>>
>> Bug : https://bugs.openjdk.java.net/browse/JDK-8247753
>> webrev: http://cr.openjdk.java.net/~pbansal/8247753/webrev00 
>> <http://cr.openjdk.java.net/%7Epbansal/8247753/webrev00>
>>
>> Bug: UIManager.getSytemLookAndFeelClassName() returns wrong value on 
>> Fedora 32. It is returning the MetalLookAndFeel classname instead of 
>> GTKLookAndFeel classname.
>>
>> Cause: Java uses a environment variable GNOME_DESKTOP_SESSION_ID to 
>> verify if the system is gnome (which is set by gnome) and then checks 
>> for GTKLookAndFeel support. If both conditions are satisfied, then 
>> GTKLookAndFeel classname is returned, else cross platform 
>> MetalLookAndFeel is selected.
>>
>> The GNOME_DESKTOP_SESSION_ID environment has been |deprecated| for a 
>> long time and the value is set to "|this-is-deprecated|" by gnome. In 
>> java, the actual value of variable is not being verified. As long as 
>> the value is not null (it has been set to something by gnome), things 
>> have been working fine though the value  set by gnome is 
>> "|this-is-deprecated|". Now, gnome has removed the variable 
>> completely and this is causing issues in Fedora 32. As the variable 
>> is not set at all, java is returning the cross platform 
>> MetalLookAndFeel classname for the SystemLookAndFeelClassName instead 
>> of GTKLookAndFeel.
>>
>> More information on this in JBS. Right now the issue is seen only on 
>> Fedora 32, but this can very well come in future releases of RHEL, 
>> CentOS, Oracle Linux etc.
>>
>> Fix: We should check XDG_CURRENT_DESKTOP also along with 
>> GNOME_DESKTOP_SESSION_ID to verify gnome based linux. 
>> XDG_CURRENT_DESKTOP is set by gnome based platforms to some string 
>> containing "gnome" substring. So, this can be used to verify the 
>> gnome based desktop. For backward compatibility, we need to continue 
>> checking GNOME_DESKTOP_SESSION_ID as well because for some linux 
>> platforms, XDG_CURRENT_DESKTOP may be set to something else as they 
>> are not gnome based, but have been returning GTKL&F as 
>> GNOME_DESKTOP_SESSION_ID was set by them. so, we dont want to change 
>> anything for them.
>>
>> Other solution could have been to just make GTKL&F default on all 
>> linux, but that would result in GTKL&F being selected on some new 
>> platfoms like KDE based platforms where currently Metal L&F is selected.
>>
>> I have modified the test case 
>> test/jdk/javax/swing/LookAndFeel/SystemLookAndFeel/SystemLookAndFeelTest.java. 
>> The test fails on Fedora 32 without fix and passes with the fix. I 
>> have run the required mach5 tests and this fix is not breaking 
>> anything. Link in JBS.
>>
>>
>> Regards,
>>
>> Pankaj Bansal
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/swing-dev/attachments/20200805/fbca66cd/attachment-0001.htm>


More information about the swing-dev mailing list