diff --git a/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java b/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java index fd529f97b..79dda3391 100644 --- a/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java +++ b/src/main/java/de/neemann/digital/builder/tt2/StartATF1502Fitter.java @@ -11,7 +11,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; -import static de.neemann.digital.gui.Settings.isLinux; +import static de.neemann.gui.Screen.isLinux; /** * Starts a fitter to create a JEDEC file. diff --git a/src/main/java/de/neemann/digital/gui/Settings.java b/src/main/java/de/neemann/digital/gui/Settings.java index 3ed05828c..f183927ea 100644 --- a/src/main/java/de/neemann/digital/gui/Settings.java +++ b/src/main/java/de/neemann/digital/gui/Settings.java @@ -104,13 +104,5 @@ public final class Settings implements AttributeListener { return settingsKeys; } - /** - * @return true if running on a windows system - */ - public static boolean isLinux() { - String name = System.getProperty("os.name").toLowerCase(); - return name.contains("linux"); - } - } diff --git a/src/main/java/de/neemann/gui/Screen.java b/src/main/java/de/neemann/gui/Screen.java index b7d7bc67b..6db046300 100644 --- a/src/main/java/de/neemann/gui/Screen.java +++ b/src/main/java/de/neemann/gui/Screen.java @@ -19,6 +19,9 @@ import java.awt.geom.AffineTransform; * Created by hneemann on 09.05.17. */ public final class Screen { + private static final String OS = System.getProperty("os.name").toLowerCase(); + private static final boolean IS_LINUX = OS.contains("linux"); + private static final boolean IS_MAC = OS.contains("mac"); private static final class InstanceHolder { private static Screen instance = new Screen(); @@ -58,6 +61,9 @@ public final class Screen { * @return the default font scaling in percent */ public static int getDefaultFontScaling() { + if (IS_MAC) // macOS has its own retina handling + return 100; + int dpi = getDefaultScreenResolution(); int s = (dpi * 100) / 96; if (s > 95 && s < 105) @@ -78,10 +84,13 @@ public final class Screen { for (Object key : javax.swing.UIManager.getLookAndFeel().getDefaults().keySet()) { if (key.toString().endsWith(".font")) javax.swing.UIManager.put(key, font); - if (key.toString().endsWith(".icon") || key.toString().endsWith("Icon")) { - Icon icon = UIManager.getIcon(key); - if (icon != null) - javax.swing.UIManager.put(key, new ScaleIcon(icon, scaling)); + + if (!IS_MAC) { // macOS has its own icon handling + if (key.toString().endsWith(".icon") || key.toString().endsWith("Icon")) { + Icon icon = UIManager.getIcon(key); + if (icon != null) + javax.swing.UIManager.put(key, new ScaleIcon(icon, scaling)); + } } } UIManager.put("ScrollBar.width", size * 17 / 12); @@ -169,4 +178,12 @@ public final class Screen { else return new Dimension((int) (dimension.width * scaling), (int) (dimension.height * scaling)); } + + /** + * @return true if running on a windows system + */ + public static boolean isLinux() { + return IS_LINUX; + } + }