summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java26
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java6
2 files changed, 24 insertions, 8 deletions
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
index a9b94655..3560b3c1 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
@@ -11,20 +11,32 @@ import javax.swing.plaf.metal.MetalLookAndFeel;
11import com.formdev.flatlaf.FlatDarculaLaf; 11import com.formdev.flatlaf.FlatDarculaLaf;
12import com.formdev.flatlaf.FlatLightLaf; 12import com.formdev.flatlaf.FlatLightLaf;
13import com.formdev.flatlaf.FlatSystemProperties; 13import com.formdev.flatlaf.FlatSystemProperties;
14import cuchaz.enigma.gui.util.ScaleUtil;
14 15
15public enum LookAndFeel { 16public enum LookAndFeel {
16 DEFAULT, 17 DEFAULT(false),
17 DARCULA, 18 DARCULA(false),
18 METAL, 19 METAL(true),
19 SYSTEM, 20 SYSTEM(true),
20 NONE; 21 NONE(true);
21 22
22 // the "JVM default" look and feel, get it at the beginning and store it so we can set it later 23 // the "JVM default" look and feel, get it at the beginning and store it so we can set it later
23 private static final javax.swing.LookAndFeel NONE_LAF = UIManager.getLookAndFeel(); 24 private static final javax.swing.LookAndFeel NONE_LAF = UIManager.getLookAndFeel();
25 private final boolean needsScaling;
26
27 LookAndFeel(boolean needsScaling) {
28 this.needsScaling = needsScaling;
29 }
30
31 public boolean needsScaling() {
32 // FlatLaf-based LaFs do their own scaling so we don't have to do it.
33 // Running swing-dpi for FlatLaf actually breaks fonts, so we let it scale the GUI.
34 return needsScaling;
35 }
24 36
25 public void setGlobalLAF() { 37 public void setGlobalLAF() {
26 // Disable FlatLaf's UI scaling, we do it on our own 38 // Configure FlatLaf's UI scale to be our scale factor.
27 System.setProperty(FlatSystemProperties.UI_SCALE_ENABLED, "false"); 39 System.setProperty(FlatSystemProperties.UI_SCALE, Float.toString(ScaleUtil.getScaleFactor()));
28 40
29 try { 41 try {
30 switch (this) { 42 switch (this) {
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java
index 47799fad..78de07dc 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java
@@ -95,7 +95,11 @@ public class ScaleUtil {
95 95
96 public static void applyScaling() { 96 public static void applyScaling() {
97 float scale = getScaleFactor(); 97 float scale = getScaleFactor();
98 UiDefaultsScaler.updateAndApplyGlobalScaling((int) (100 * scale), true); 98
99 if (UiConfig.getLookAndFeel().needsScaling()) {
100 UiDefaultsScaler.updateAndApplyGlobalScaling((int) (100 * scale), true);
101 }
102
99 try { 103 try {
100 Field defaultFontField = DefaultSyntaxKit.class.getDeclaredField("DEFAULT_FONT"); 104 Field defaultFontField = DefaultSyntaxKit.class.getDeclaredField("DEFAULT_FONT");
101 defaultFontField.setAccessible(true); 105 defaultFontField.setAccessible(true);