diff --git a/platform/platform-impl/src/com/intellij/ide/SystemHealthMonitor.java b/platform/platform-impl/src/com/intellij/ide/SystemHealthMonitor.java index 025ce33db5fb..3430009bf7ae 100644 --- a/platform/platform-impl/src/com/intellij/ide/SystemHealthMonitor.java +++ b/platform/platform-impl/src/com/intellij/ide/SystemHealthMonitor.java @@ -41,6 +41,7 @@ import com.intellij.ui.awt.RelativePoint; import com.intellij.util.JdkBundle; import com.intellij.util.SystemProperties; import com.intellij.util.TimeoutUtil; +import com.intellij.util.ui.UIUtil; import com.sun.jna.Library; import com.sun.jna.Memory; import com.sun.jna.Native; @@ -78,6 +79,7 @@ public class SystemHealthMonitor implements ApplicationComponent { checkReservedCodeCacheSize(); checkIBus(); checkSignalBlocking(); + checkHiDPIMode(); startDiskSpaceMonitoring(); } @@ -166,6 +168,14 @@ public class SystemHealthMonitor implements ApplicationComponent { } } + private void checkHiDPIMode() { + // if switched from JRE-HiDPI to IDE-HiDPI + boolean switchedHiDPIMode = SystemInfo.isJetBrainsJvm && "true".equalsIgnoreCase(System.getProperty("sun.java2d.uiScale.enabled")) && !UIUtil.isJreHiDPIEnabled(); + if (SystemInfo.isWindows && (switchedHiDPIMode || RemoteDesktopService.isRemoteSession())) { + showNotification(new KeyHyperlinkAdapter("ide.set.hidpi.mode")); + } + } + private void showNotification(KeyHyperlinkAdapter adapter, Object... params) { @PropertyKey(resourceBundle = "messages.IdeBundle") String key = adapter.key; boolean ignored = adapter.isIgnored(); diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index 2e65277ff31a..3cef34af892a 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -538,6 +538,7 @@ ide.restart.required.notification={0} {1} to activate changes in ide.restart.action=Restart ide.shutdown.action=Shutdown ide.postpone.action=Postpone +ide.set.hidpi.mode=You may need to manually configure the HiDPI mode to prevent UI scaling issues. See the troubleshooting guide. title.plugins=Plugins title.plugins.changed=Plugins Changed plugin.status.not.specified=(not specified)