diff options
-rw-r--r-- | src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java b/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java index 6573679cea6..ec86e84c615 100644 --- a/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java +++ b/src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java @@ -69,10 +69,8 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, // // enable X11_DISABLE_OVERRIDE_FLAG by default (users haven't found side-effects), see // https://youtrack.jetbrains.com/issue/JBR-1680#focus=streamItem-27-3924178.0-0 - private static final boolean X11_DISABLE_OVERRIDE_FLAG = - GetPropertyAction.privilegedGetProperty("x11.disable.override.flag", "true").equalsIgnoreCase("true"); - private static final boolean X11_DISABLE_OVERRIDE_XWINDOWPEER = - GetPropertyAction.privilegedGetProperty("x11.disable.override.xwindowpeer", "false").equalsIgnoreCase("true"); + private static final boolean X11_DISABLE_OVERRIDE_FLAG; + private static final boolean X11_DISABLE_OVERRIDE_XWINDOWPEER; // should be synchronized on awtLock private static Set<XWindowPeer> windows = new HashSet<XWindowPeer>(); @@ -151,6 +149,17 @@ class XWindowPeer extends XPanelPeer implements WindowPeer, */ private static final int MAXIMUM_BUFFER_LENGTH_NET_WM_ICON = (2<<15) - 1; + static { + /* https://userbase.kde.org/KDE_System_Administration/Environment_Variables#KDE_FULL_SESSION */ + final String kdeSession = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getenv("KDE_FULL_SESSION")); + final boolean isKDE = kdeSession != null && !kdeSession.isEmpty(); + + X11_DISABLE_OVERRIDE_FLAG = + GetPropertyAction.privilegedGetProperty("x11.disable.override.flag", isKDE ? "true" : "false").equalsIgnoreCase("true"); + X11_DISABLE_OVERRIDE_XWINDOWPEER = + GetPropertyAction.privilegedGetProperty("x11.disable.override.xwindowpeer", "false").equalsIgnoreCase("true"); + } + void preInit(XCreateWindowParams params) { target = (Component)params.get(TARGET); windowType = ((Window)target).getType(); |