From 6c7229ebe2439ef7a0e057cad35c1b27abd06b62 Mon Sep 17 00:00:00 2001 From: "Klare, Heiko" Date: Sun, 18 Jan 2026 11:14:50 +0100 Subject: [PATCH] [Win32] Improve parameterization of monitor-specific scaling enablement Some parts of the implementation currently assume monitor-specific scaling to be disabled by default and autoscaling mode to default to "integer". With monitor-specific scaling becoming the default in the future, these assumptions will not hold anymore. In order to prepare for that, this change adapts some code to properly deal with monitor-specific scaling and autoscaling mode having arbitrary default values. # Conflicts: # bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/DPIUtil.java # tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java --- .../Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java | 2 +- .../junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java index 67620ff4e9..152d986a35 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java @@ -951,8 +951,8 @@ protected void create (DeviceData data) { checkDisplay (thread = Thread.currentThread (), true); if (DPIUtil.isMonitorSpecificScalingActive()) { setMonitorSpecificScaling(true); - DPIUtil.setMonitorSpecificScaling(true); } + DPIUtil.setMonitorSpecificScaling(DPIUtil.isMonitorSpecificScalingActive()); Win32DPIUtils.initializeCustomDpiAwareness(); createDisplay (data); register (this); diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java index 5a6dab4a8b..7a8ad71889 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests_AutoscaleOsNonDefaults.java @@ -22,20 +22,21 @@ @NonBrowserTestSuite public class AllNonBrowserTests_AutoscaleOsNonDefaults extends AllNonBrowserTests { + private static final String AUTO_SCALE_PROPERTY = "swt.autoScale"; private static boolean originalMonitorSpecificScalingActive; @SuppressWarnings("restriction") @BeforeSuite static void setNonDefaultAutoscale() { originalMonitorSpecificScalingActive = DPIUtil.isMonitorSpecificScalingActive(); - System.setProperty("swt.autoScale", "quarter"); - DPIUtil.setMonitorSpecificScaling(true); + System.setProperty(AUTO_SCALE_PROPERTY, originalMonitorSpecificScalingActive ? "integer" : "quarter"); + DPIUtil.setMonitorSpecificScaling(!originalMonitorSpecificScalingActive); } @SuppressWarnings("restriction") @AfterSuite static void restoreDefaultAutoscale() { - System.clearProperty("swt.autoScale"); + System.clearProperty(AUTO_SCALE_PROPERTY); DPIUtil.setMonitorSpecificScaling(originalMonitorSpecificScalingActive); }