[11u] RFR: JDK-8247753: UIManager.getSytemLookAndFeelClassName() returns wrong value on Fedora 32

Severin Gehwolf sgehwolf at redhat.com
Mon Feb 22 13:14:08 UTC 2021


Hi,

On Mon, 2021-02-22 at 06:02 +0000, Ramanand Patil wrote:
> Hi all,
> Please review the JDK11u backport of JDK-8247753:
> UIManager.getSytemLookAndFeelClassName() returns wrong value on Fedora
> 32
> Bug Link: https://bugs.openjdk.java.net/browse/JDK-8247753
> Webrev: http://cr.openjdk.java.net/~rpatil/8247753/webrev.00/

 461         if (getenv("GNOME_DESKTOP_SESSION_ID") != NULL
 462             || getenv("XDG_CURRENT_DESKTOP") != NULL) {
 463             sprops.desktop = "gnome";
 464         }

This doesn't match the functionality in jdk/jdk, which only returns a
desktop value of "gnome" if XDG_CURRENT_DESKTOP contains the string,
ignoring case, "gnome".

The current patch actually fails the test if XDG_CURRENT_DESKTOP=FOO.

Suggested change:

diff --git a/src/java.base/unix/native/libjava/java_props_md.c b/src/java.base/unix/native/libjava/java_props_md.c
--- a/src/java.base/unix/native/libjava/java_props_md.c
+++ b/src/java.base/unix/native/libjava/java_props_md.c
@@ -457,9 +457,10 @@
 #endif /* MACOSX */
 
         sprops.os_arch = ARCHPROPNAME;
+        char* curr_desktop = getenv("XDG_CURRENT_DESKTOP");
 
         if (getenv("GNOME_DESKTOP_SESSION_ID") != NULL
-            || getenv("XDG_CURRENT_DESKTOP") != NULL) {
+            || (curr_desktop != NULL && strcasestr(curr_desktop, "gnome") != NULL)) {
             sprops.desktop = "gnome";
         }
         else {

Thanks,
Severin



More information about the jdk-updates-dev mailing list