Skip to content
This repository has been archived by the owner on Feb 2, 2023. It is now read-only.

8247753: UIManager.getSytemLookAndFeelClassName() returns wrong value on Fedora 32 #27

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/java.desktop/unix/classes/sun/awt/UNIXToolkit.java
Expand Up @@ -95,10 +95,19 @@ public static int getDatatransferTimeout() {

@Override
public String getDesktop() {
String gnome = "gnome";
String gsi = AccessController.doPrivileged(
(PrivilegedAction<String>) ()
-> System.getenv("GNOME_DESKTOP_SESSION_ID"));
return (gsi != null) ? "gnome" : null;
if (gsi != null) {
return gnome;
}

String desktop = AccessController.doPrivileged(
(PrivilegedAction<String>) ()
-> System.getenv("XDG_CURRENT_DESKTOP"));
return (desktop != null && desktop.toLowerCase().contains(gnome))
? gnome : null;
}

/**
Expand Down
Expand Up @@ -21,9 +21,9 @@
* questions.
*/

/*
/*
* @test
* @bug 8226783
* @bug 8226783 8247753
* @key headful
* @summary Verify System L&F
*/
Expand Down Expand Up @@ -52,23 +52,26 @@ public static void main(String[] args) {
} else if (os.contains("macos")) {
expLAF = "com.apple.laf.AquaLookAndFeel";
} else if (os.contains("linux")) {
/*
* The implementation keys off the following desktop setting to
* decide if GTK is an appropriate system L&F.
* In its absence, there probably isn't support for the GTK L&F
* anyway. It does not tell us if the GTK libraries are available
* but they really should be if this is a gnome session.
* If it proves necessary the test can perhaps be updated to see
* if the GTK LAF is listed as installed and can be instantiated.
*/
String gnome = System.getenv("GNOME_DESKTOP_SESSION_ID");
System.out.println("Gnome desktop session ID is " + gnome);
if (gnome != null) {
expLAF = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
} else if (os.contains("linux")) {
expLAF = "javax.swing.plaf.metal.MetalLookAndFeel";
}
}
/*
* The implementation keys off the following desktop setting to
* decide if GTK is an appropriate system L&F.
* In its absence, there probably isn't support for the GTK L&F
* anyway. It does not tell us if the GTK libraries are available
* but they really should be if this is a gnome session.
* If it proves necessary the test can perhaps be updated to see
* if the GTK LAF is listed as installed and can be instantiated.
*/
String gnome = System.getenv("GNOME_DESKTOP_SESSION_ID");
String desktop = System.getenv("XDG_CURRENT_DESKTOP");
System.out.println("Gnome desktop session ID is " + gnome);
System.out.println("XDG_CURRENT_DESKTOP is set to " + desktop);
if (gnome != null ||
(desktop != null && desktop.toLowerCase().contains("gnome"))) {
expLAF = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
} else {
expLAF = "javax.swing.plaf.metal.MetalLookAndFeel";
}
}
System.out.println("Expected System LAF is " + expLAF);
if (expLAF == null) {
System.out.println("No match for expected LAF, unknown OS ?");
Expand All @@ -77,5 +80,5 @@ public static void main(String[] args) {
if (!(laf.equals(expLAF))) {
throw new RuntimeException("LAF not as expected");
}
}
}
}