From 3e7b25a96fedd87f3d19b60fcacd82ecf2427da3 Mon Sep 17 00:00:00 2001 From: takattowo <63276803+takattowo@users.noreply.github.com> Date: Sun, 24 May 2026 14:51:19 +0700 Subject: [PATCH] feat(ui): redetect scale factor on each launch when not set in config (PR260) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * re-detect DPI scale each launch instead of using stale saved value * make uiScale config default null --------- Co-authored-by: Jindra Petřík --- .../flash/configuration/Configuration.java | 2 +- src/com/jpexs/decompiler/flash/gui/Main.java | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 9ff8c6d9c..3c419c85c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -823,7 +823,7 @@ public final class Configuration { @ConfigurationCategory("script") public static ConfigurationItem flattenASPackages = null; - @ConfigurationDefaultDouble(1.0) + //@ConfigurationDefaultDouble(1.0) @ConfigurationCategory("display") @ConfigurationName("gui.scale") public static ConfigurationItem uiScale = null; diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index f80bf2774..3df0f4cef 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -2971,16 +2971,19 @@ public class Main { System.setProperty("sun.java2d.d3d", "false"); System.setProperty("sun.java2d.noddraw", "true"); - if (System.getProperty("sun.java2d.uiScale") == null) { //it was not set by commandline, etc. - if (!Configuration.uiScale.hasValue()) { + if (System.getProperty("sun.java2d.uiScale") == null) { //it was not set by commandline, etc. + double scaleToUse = Configuration.uiScale.get(); + if (!Configuration.uiScale.hasValue() || Configuration.uiScale.get() == null) { + // Auto-detect from current screen. Do NOT persist to config so the scale is + // re-detected on each launch (prevents stale 4K scale being applied on a + // lower-DPI monitor after a display change). GraphicsConfiguration configuration = View.getMainDefaultScreenDevice().getDefaultConfiguration(); - AffineTransform transform = configuration.getDefaultTransform(); if (transform != null) { - Configuration.uiScale.set(transform.getScaleX()); + scaleToUse = transform.getScaleX(); } } - System.setProperty("sun.java2d.uiScale", "" + Configuration.uiScale.get()); + System.setProperty("sun.java2d.uiScale", "" + scaleToUse); } if (Configuration.hwAcceleratedGraphics.get()) {