diff --git a/platform/platform-api/src/com/intellij/ui/ScreenUtil.java b/platform/platform-api/src/com/intellij/ui/ScreenUtil.java index 00300b390604..8f46df3054c3 100644 --- a/platform/platform-api/src/com/intellij/ui/ScreenUtil.java +++ b/platform/platform-api/src/com/intellij/ui/ScreenUtil.java @@ -15,7 +15,6 @@ */ package com.intellij.ui; -import com.intellij.Patches; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.util.containers.WeakHashMap; @@ -165,10 +164,6 @@ public class ScreenUtil { } private static Insets calcInsets(GraphicsConfiguration gc) { - if (Patches.SUN_BUG_ID_9000030 && GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices().length > 1) { - return new Insets(0, 0, 0, 0); - } - return Toolkit.getDefaultToolkit().getScreenInsets(gc); } diff --git a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java index d8c1f084d494..ffaee05ef2f6 100644 --- a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java +++ b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java @@ -105,6 +105,7 @@ public class StartupUtil { loadSystemLibraries(log); if (!Main.isHeadless()) { + AppUIUtil.patchSystem(); AppUIUtil.updateWindowIcon(JOptionPane.getRootFrame()); AppUIUtil.registerBundledFonts(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/X11UiUtil.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/X11UiUtil.java index caa0487dccea..06b00ea0e933 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/X11UiUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/X11UiUtil.java @@ -244,7 +244,7 @@ public class X11UiUtil { @SuppressWarnings("SpellCheckingInspection") public static void patchDetectedWm(String wmName) { - if (X11 == null || Registry.is("idea.x11.skip.wm.patching")) return; + if (X11 == null || !Registry.is("ide.x11.override.wm")) return; try { if (wmName.startsWith("Mutter") || "Muffin".equals(wmName) || "GNOME Shell".equals(wmName)) { diff --git a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java index a9eefcb35c9f..ce65d0e6d973 100644 --- a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java +++ b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java @@ -15,6 +15,7 @@ */ package com.intellij.ui; +import com.intellij.Patches; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationNamesInfo; @@ -25,6 +26,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.Balloon; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.util.PlatformUtils; @@ -47,6 +49,21 @@ import java.util.List; public class AppUIUtil { private static final String VENDOR_PREFIX = "jetbrains-"; + public static void patchSystem() { + if (Patches.SUN_BUG_ID_9000030 && Registry.is("ide.x11.suppress.xinerama")) { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + if (ge.getScreenDevices().length > 1) { + try { + @SuppressWarnings("SpellCheckingInspection") Field xinerState = ge.getClass().getDeclaredField("xinerState"); + xinerState.setAccessible(true); + xinerState.set(null, Boolean.FALSE); + Logger.getInstance(AppUIUtil.class).info("Xinerama detection suppressed"); + } + catch (Exception ignored) { } + } + } + } + public static void updateWindowIcon(@NotNull Window window) { window.setIconImages(getAppIconImages()); } diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index 597a1f1d4c02..0676fe268fa5 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -64,7 +64,8 @@ idea.fix.mac.env=true # suppress inspection "UnusedProperty" idea.fix.mac.env.description=On Mac, use shell environment for external processes (effective on restart). -idea.x11.skip.wm.patching=false +ide.x11.override.wm=true +ide.x11.suppress.xinerama=true ide.appIcon.progress=true ide.appIcon.badge=true