From 58f2fa7ce0787f8f7bd509e2be39a77f78b3b64d Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Fri, 2 Mar 2018 14:10:39 +0300 Subject: [PATCH] [followup] Fix "hidpi" property --- .../platform-impl/src/com/intellij/idea/StartupUtil.java | 9 +++++++-- .../testSrc/com/intellij/util/ui/HidpiPropTest.java | 7 +------ .../testSrc/com/intellij/util/ui/TestScaleHelper.java | 7 +------ platform/util/src/com/intellij/util/ui/JBUI.java | 4 ++-- platform/util/src/com/intellij/util/ui/UIUtil.java | 8 +++++++- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java index 1da9be64cc97..e2713662938a 100644 --- a/platform/platform-impl/src/com/intellij/idea/StartupUtil.java +++ b/platform/platform-impl/src/com/intellij/idea/StartupUtil.java @@ -34,6 +34,7 @@ import org.apache.log4j.Level; import org.apache.log4j.PatternLayout; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import org.jetbrains.io.BuiltInServer; import javax.swing.*; @@ -183,9 +184,13 @@ public class StartupUtil { return true; } - // called via reflection from com.intellij.util.ui.HidpiPropTest + @TestOnly + public static void test_checkHiDPISettings() { + checkHiDPISettings(); + } + private static void checkHiDPISettings() { - if (SystemProperties.has("hidpi") && !SystemProperties.is("hidpi")) { + if (!SystemProperties.getBooleanProperty("hidpi", true)) { // suppress JRE-HiDPI mode System.setProperty("sun.java2d.uiScale.enabled", "false"); } diff --git a/platform/platform-tests/testSrc/com/intellij/util/ui/HidpiPropTest.java b/platform/platform-tests/testSrc/com/intellij/util/ui/HidpiPropTest.java index 8ad5af29813d..2c17d819f8ec 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/ui/HidpiPropTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/ui/HidpiPropTest.java @@ -2,12 +2,9 @@ package com.intellij.util.ui; import com.intellij.idea.StartupUtil; -import com.intellij.util.MethodInvocator; -import com.intellij.util.ReflectionUtil; import com.intellij.util.SystemProperties; import org.junit.*; -import javax.swing.*; import java.awt.*; /** @@ -28,9 +25,7 @@ public class HidpiPropTest { @Before public void setState() { TestScaleHelper.setProperty(HIDPI_PROP, "false"); - MethodInvocator m = new MethodInvocator(StartupUtil.class, "checkHiDPISettings"); - Assume.assumeTrue("StartupUtil.checkHiDPISettings method not available", m.isAvailable()); - m.invoke(null); + StartupUtil.test_checkHiDPISettings(); } @After diff --git a/platform/platform-tests/testSrc/com/intellij/util/ui/TestScaleHelper.java b/platform/platform-tests/testSrc/com/intellij/util/ui/TestScaleHelper.java index d4bc6c87d26d..7be9f6bca7d8 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/ui/TestScaleHelper.java +++ b/platform/platform-tests/testSrc/com/intellij/util/ui/TestScaleHelper.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.util.ui; -import com.intellij.util.FieldAccessor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.After; @@ -11,16 +10,12 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; -import java.util.concurrent.atomic.AtomicReference; /** * @author tav */ @SuppressWarnings("JUnitTestCaseWithNoTests") public class TestScaleHelper { - private static final FieldAccessor> JRE_HIDPI_ACCESSOR = - new FieldAccessor<>(UIUtil.class, "jreHiDPI"); - private static final Map origProps = new HashMap<>(); private float originalUserScale; @@ -60,7 +55,7 @@ public class TestScaleHelper { } public static void overrideJreHiDPIEnabled(boolean enabled) { - JRE_HIDPI_ACCESSOR.get(null).set(enabled); + UIUtil.test_jreHiDPI().set(enabled); } public static Graphics2D createGraphics(double scale) { diff --git a/platform/util/src/com/intellij/util/ui/JBUI.java b/platform/util/src/com/intellij/util/ui/JBUI.java index c3e88827d011..2179c8fbf557 100644 --- a/platform/util/src/com/intellij/util/ui/JBUI.java +++ b/platform/util/src/com/intellij/util/ui/JBUI.java @@ -207,7 +207,7 @@ public class JBUI { @NotNull @Override public Float initialize() { - if (SystemProperties.has("hidpi") && !SystemProperties.is("hidpi")) { + if (!SystemProperties.getBooleanProperty("hidpi", true)) { return 1f; } if (UIUtil.isJreHiDPIEnabled()) { @@ -421,7 +421,7 @@ public class JBUI { return debugScale; } - if (SystemProperties.has("hidpi") && !SystemProperties.is("hidpi")) { + if (!SystemProperties.getBooleanProperty("hidpi", true)) { setUserScaleFactorProperty(1f); return 1f; } diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index 840f7a65d32a..c24a04648bdc 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -392,6 +392,12 @@ public class UIUtil { private static final AtomicReference jreHiDPI = new AtomicReference(); private static volatile boolean jreHiDPI_earlierVersion; + @TestOnly + public static final AtomicReference test_jreHiDPI() { + if (jreHiDPI.get() == null) isJreHiDPIEnabled(); // force init + return jreHiDPI; + } + /** * Returns whether the JRE-managed HiDPI mode is enabled. * (True for macOS JDK >= 7.10 versions) @@ -405,7 +411,7 @@ public class UIUtil { if (jreHiDPI.get() != null) return jreHiDPI.get(); jreHiDPI.set(false); - if (SystemProperties.has("hidpi") && !SystemProperties.is("hidpi")) { + if (!SystemProperties.getBooleanProperty("hidpi", true)) { return false; } jreHiDPI_earlierVersion = true;