aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java17
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();