diff options
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java | 26 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/util/ScaleUtil.java | 6 |
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; | |||
| 11 | import com.formdev.flatlaf.FlatDarculaLaf; | 11 | import com.formdev.flatlaf.FlatDarculaLaf; |
| 12 | import com.formdev.flatlaf.FlatLightLaf; | 12 | import com.formdev.flatlaf.FlatLightLaf; |
| 13 | import com.formdev.flatlaf.FlatSystemProperties; | 13 | import com.formdev.flatlaf.FlatSystemProperties; |
| 14 | import cuchaz.enigma.gui.util.ScaleUtil; | ||
| 14 | 15 | ||
| 15 | public enum LookAndFeel { | 16 | public 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); |