diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c index 495e6a69ac5..0d075e66459 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c @@ -6519,18 +6519,6 @@ JNIEXPORT void JNICALL OS_NATIVE(NotifyWinEvent) } #endif -#ifndef NO_OSVERSIONINFOEX_1sizeof -JNIEXPORT jint JNICALL OS_NATIVE(OSVERSIONINFOEX_1sizeof) - (JNIEnv *env, jclass that) -{ - jint rc = 0; - OS_NATIVE_ENTER(env, that, OSVERSIONINFOEX_1sizeof_FUNC); - rc = (jint)OSVERSIONINFOEX_sizeof(); - OS_NATIVE_EXIT(env, that, OSVERSIONINFOEX_1sizeof_FUNC); - return rc; -} -#endif - #ifndef NO_OUTLINETEXTMETRIC_1sizeof JNIEXPORT jint JNICALL OS_NATIVE(OUTLINETEXTMETRIC_1sizeof) (JNIEnv *env, jclass that) @@ -7322,30 +7310,6 @@ JNIEXPORT jboolean JNICALL OS_NATIVE(RoundRect) } #endif -#ifndef NO_RtlGetVersion -JNIEXPORT jint JNICALL OS_NATIVE(RtlGetVersion) - (JNIEnv *env, jclass that, jobject arg0) -{ - OSVERSIONINFOEX _arg0, *lparg0=NULL; - jint rc = 0; - OS_NATIVE_ENTER(env, that, RtlGetVersion_FUNC); - if (arg0) if ((lparg0 = getOSVERSIONINFOEXFields(env, arg0, &_arg0)) == NULL) goto fail; -/* - rc = (jint)RtlGetVersion(lparg0); -*/ - { - OS_LOAD_FUNCTION(fp, RtlGetVersion) - if (fp) { - rc = (jint)((jint (CALLING_CONVENTION*)(OSVERSIONINFOEX *))fp)(lparg0); - } - } -fail: - if (arg0 && lparg0) setOSVERSIONINFOEXFields(env, arg0, lparg0); - OS_NATIVE_EXIT(env, that, RtlGetVersion_FUNC); - return rc; -} -#endif - #ifndef NO_SAFEARRAYBOUND_1sizeof JNIEXPORT jint JNICALL OS_NATIVE(SAFEARRAYBOUND_1sizeof) (JNIEnv *env, jclass that) diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h index 16ce626c546..bc809ece5f4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_stats.h @@ -499,7 +499,6 @@ typedef enum { NONCLIENTMETRICS_1sizeof_FUNC, NOTIFYICONDATA_1V2_1SIZE_FUNC, NotifyWinEvent_FUNC, - OSVERSIONINFOEX_1sizeof_FUNC, OUTLINETEXTMETRIC_1sizeof_FUNC, OffsetRect_FUNC, OffsetRgn_FUNC, @@ -554,7 +553,6 @@ typedef enum { ReplyMessage_FUNC, RestoreDC_FUNC, RoundRect_FUNC, - RtlGetVersion_FUNC, SAFEARRAYBOUND_1sizeof_FUNC, SAFEARRAY_1sizeof_FUNC, SCRIPT_1ANALYSIS_1sizeof_FUNC, diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c index da11d5aa500..6de84ef4593 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c @@ -4213,73 +4213,6 @@ void setNOTIFYICONDATAFields(JNIEnv *env, jobject lpObject, NOTIFYICONDATA *lpSt } #endif -#ifndef NO_OSVERSIONINFOEX -typedef struct OSVERSIONINFOEX_FID_CACHE { - int cached; - jclass clazz; - jfieldID dwOSVersionInfoSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, dwPlatformId, szCSDVersion, wServicePackMajor, wServicePackMinor, wSuiteMask, wProductType, wReserved; -} OSVERSIONINFOEX_FID_CACHE; - -OSVERSIONINFOEX_FID_CACHE OSVERSIONINFOEXFc; - -void cacheOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject) -{ - if (OSVERSIONINFOEXFc.cached) return; - OSVERSIONINFOEXFc.clazz = (*env)->GetObjectClass(env, lpObject); - OSVERSIONINFOEXFc.dwOSVersionInfoSize = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "dwOSVersionInfoSize", "I"); - OSVERSIONINFOEXFc.dwMajorVersion = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "dwMajorVersion", "I"); - OSVERSIONINFOEXFc.dwMinorVersion = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "dwMinorVersion", "I"); - OSVERSIONINFOEXFc.dwBuildNumber = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "dwBuildNumber", "I"); - OSVERSIONINFOEXFc.dwPlatformId = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "dwPlatformId", "I"); - OSVERSIONINFOEXFc.szCSDVersion = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "szCSDVersion", "[C"); - OSVERSIONINFOEXFc.wServicePackMajor = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "wServicePackMajor", "I"); - OSVERSIONINFOEXFc.wServicePackMinor = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "wServicePackMinor", "I"); - OSVERSIONINFOEXFc.wSuiteMask = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "wSuiteMask", "I"); - OSVERSIONINFOEXFc.wProductType = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "wProductType", "I"); - OSVERSIONINFOEXFc.wReserved = (*env)->GetFieldID(env, OSVERSIONINFOEXFc.clazz, "wReserved", "I"); - OSVERSIONINFOEXFc.cached = 1; -} - -OSVERSIONINFOEX *getOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOEX *lpStruct) -{ - if (!OSVERSIONINFOEXFc.cached) cacheOSVERSIONINFOEXFields(env, lpObject); - lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.dwOSVersionInfoSize); - lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.dwMajorVersion); - lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.dwMinorVersion); - lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.dwBuildNumber); - lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.dwPlatformId); - { - jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, OSVERSIONINFOEXFc.szCSDVersion); - (*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / sizeof(jchar), (jchar *)lpStruct->szCSDVersion); - } - lpStruct->wServicePackMajor = (WORD)(*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.wServicePackMajor); - lpStruct->wServicePackMinor = (WORD)(*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.wServicePackMinor); - lpStruct->wSuiteMask = (WORD)(*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.wSuiteMask); - lpStruct->wProductType = (BYTE)(*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.wProductType); - lpStruct->wReserved = (BYTE)(*env)->GetIntField(env, lpObject, OSVERSIONINFOEXFc.wReserved); - return lpStruct; -} - -void setOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOEX *lpStruct) -{ - if (!OSVERSIONINFOEXFc.cached) cacheOSVERSIONINFOEXFields(env, lpObject); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.dwPlatformId, (jint)lpStruct->dwPlatformId); - { - jcharArray lpObject1 = (jcharArray)(*env)->GetObjectField(env, lpObject, OSVERSIONINFOEXFc.szCSDVersion); - (*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / sizeof(jchar), (jchar *)lpStruct->szCSDVersion); - } - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.wServicePackMajor, (jint)lpStruct->wServicePackMajor); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.wServicePackMinor, (jint)lpStruct->wServicePackMinor); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.wSuiteMask, (jint)lpStruct->wSuiteMask); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.wProductType, (jint)lpStruct->wProductType); - (*env)->SetIntField(env, lpObject, OSVERSIONINFOEXFc.wReserved, (jint)lpStruct->wReserved); -} -#endif - #ifndef NO_OUTLINETEXTMETRIC typedef struct OUTLINETEXTMETRIC_FID_CACHE { int cached; diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h index c195326032f..1acb67b74d7 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h @@ -965,18 +965,6 @@ void setNOTIFYICONDATAFields(JNIEnv *env, jobject lpObject, NOTIFYICONDATA *lpSt #define NOTIFYICONDATA_sizeof() 0 #endif -#ifndef NO_OSVERSIONINFOEX -void cacheOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject); -OSVERSIONINFOEX *getOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOEX *lpStruct); -void setOSVERSIONINFOEXFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOEX *lpStruct); -#define OSVERSIONINFOEX_sizeof() sizeof(OSVERSIONINFOEX) -#else -#define cacheOSVERSIONINFOEXFields(a,b) -#define getOSVERSIONINFOEXFields(a,b,c) NULL -#define setOSVERSIONINFOEXFields(a,b,c) -#define OSVERSIONINFOEX_sizeof() 0 -#endif - #ifndef NO_OUTLINETEXTMETRIC void cacheOUTLINETEXTMETRICFields(JNIEnv *env, jobject lpObject); OUTLINETEXTMETRIC *getOUTLINETEXTMETRICFields(JNIEnv *env, jobject lpObject, OUTLINETEXTMETRIC *lpStruct); diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java index 75e6f4da1c0..73b75f8d3d9 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OS.java @@ -19,6 +19,7 @@ import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.*; +import org.eclipse.swt.internal.win32.version.*; import org.eclipse.swt.widgets.*; public class OS extends C { @@ -30,18 +31,6 @@ public class OS extends C { * SWT Windows flags */ public static final boolean IsDBLocale; - /** - * Always reports the correct build number, regardless of manifest and - * compatibility GUIDs. Note that build number alone is sufficient to - * identify Windows version. - */ - public static final int WIN32_BUILD; - /** - * Values taken from https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions - */ - public static final int WIN32_BUILD_WIN10_1809 = 17763; // "Windows 10 October 2018 Update" - public static final int WIN32_BUILD_WIN10_2004 = 19041; // "Windows 10 May 2020 Update" - public static final int WIN32_BUILD_WIN11_21H2 = 22000; // Initial Windows 11 release public static final String NO_MANIFEST = "org.eclipse.swt.internal.win32.OS.NO_MANIFEST"; @@ -53,20 +42,6 @@ public class OS extends C { public static final int SM_IMMENABLED = 0x52; static { - /* - * Starting with Windows 10, GetVersionEx() lies about version unless - * application manifest has a proper entry. RtlGetVersion() always - * reports true version. - */ - OSVERSIONINFOEX osVersionInfoEx = new OSVERSIONINFOEX (); - osVersionInfoEx.dwOSVersionInfoSize = OSVERSIONINFOEX.sizeof; - if (0 == OS.RtlGetVersion (osVersionInfoEx)) { - WIN32_BUILD = osVersionInfoEx.dwBuildNumber; - } else { - System.err.println ("SWT: OS: Failed to detect Windows build number"); - WIN32_BUILD = 0; - } - /* Load the manifest to force the XP Theme */ if (System.getProperty (NO_MANIFEST) == null) { ACTCTX pActCtx = new ACTCTX (); @@ -1974,7 +1949,6 @@ public static int VERSION (int major, int minor) { /** @method flags=const */ public static final native int NOTIFYICONDATA_V2_SIZE (); public static final native int OUTLINETEXTMETRIC_sizeof (); -public static final native int OSVERSIONINFOEX_sizeof (); public static final native int PAINTSTRUCT_sizeof (); public static final native int POINT_sizeof (); public static final native int PRINTDLG_sizeof (); @@ -3964,8 +3938,6 @@ public static int HRESULT_FROM_WIN32(int x) { public static final native boolean RestoreDC (long hdc, int nSavedDC); /** @param hdc cast=(HDC) */ public static final native boolean RoundRect (long hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidth, int nHeight); -/** @method flags=dynamic */ -public static final native int RtlGetVersion (OSVERSIONINFOEX lpVersionInformation); /** @param hdc cast=(HDC) */ public static final native int SaveDC (long hdc); /** @param hWnd cast=(HWND) */ @@ -4616,7 +4588,7 @@ public static final native boolean DuplicateHandle(long hSourceProcessHandle, lo public static long OpenThemeData(long hwnd, char[] themeName, int dpi) { - if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN10_1809) { + if (OsVersion.IS_WIN10_1809) { return OS.OpenThemeDataForDpi(hwnd, themeName, dpi); } else { return OS.OpenThemeData(hwnd, themeName); diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OSVERSIONINFOEX.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OSVERSIONINFOEX.java deleted file mode 100644 index df6da82d39c..00000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/OSVERSIONINFOEX.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Syntevo and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Syntevo - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.internal.win32; - -public class OSVERSIONINFOEX { - public int dwOSVersionInfoSize; - public int dwMajorVersion; - public int dwMinorVersion; - public int dwBuildNumber; - public int dwPlatformId; - public char[] szCSDVersion = new char[128]; - /** @field cast=(WORD) */ - public int wServicePackMajor; - /** @field cast=(WORD) */ - public int wServicePackMinor; - /** @field cast=(WORD) */ - public int wSuiteMask; - /** @field cast=(BYTE) */ - public int wProductType; - /** @field cast=(BYTE) */ - public int wReserved; - - public static final int sizeof = OS.OSVERSIONINFOEX_sizeof (); -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/version/OsVersion.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/version/OsVersion.java index e02be241ec7..094e78da9ee 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/version/OsVersion.java +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/version/OsVersion.java @@ -31,20 +31,25 @@ public class OsVersion extends Platform { * compatibility GUIDs. Note that build number alone is sufficient to * identify Windows version. */ - public static final int WIN32_BUILD; + private static final int WIN32_BUILD = getCurrentOsVersion(); + /** * Values taken from https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions */ - public static final int WIN32_BUILD_WIN10_1607 = 14393; // "Windows 10 August 2016 Update" + private static final int WIN10_1607 = 14393; + public static final boolean IS_WIN10_1607 = WIN32_BUILD >= WIN10_1607; // "Windows 10 August 2016 Update" + public static final boolean IS_WIN10_1809 = WIN32_BUILD >= 17763; // "Windows 10 October 2018 Update" + public static final boolean IS_WIN10_2004 = WIN32_BUILD >= 19041; // "Windows 10 May 2020 Update" + public static final boolean IS_WIN11_21H2 = WIN32_BUILD >= 22000; // Initial Windows 11 release /** * The minimum supported Windows build version for using this SWT version */ - public static final int WIN32_MINIMUM_COMPATIBLE_BUILD = WIN32_BUILD_WIN10_1607; + private static final int MINIMUM_COMPATIBLE_BUILD = WIN10_1607; private static final String DISABLE_WINDOWS_VERSION_CHECK_PROPERTY = "swt.disableWindowsVersionCheck"; - static { + private static int getCurrentOsVersion() { /* * Starting with Windows 10, GetVersionEx() lies about version unless * application manifest has a proper entry. RtlGetVersion() always @@ -53,19 +58,19 @@ public class OsVersion extends Platform { OSVERSIONINFOEX osVersionInfoEx = new OSVERSIONINFOEX (); osVersionInfoEx.dwOSVersionInfoSize = OSVERSIONINFOEX.sizeof; if (0 == OsVersion.RtlGetVersion (osVersionInfoEx)) { - WIN32_BUILD = osVersionInfoEx.dwBuildNumber; + return osVersionInfoEx.dwBuildNumber; } else { System.err.println ("SWT: OS: Failed to detect Windows build number"); - WIN32_BUILD = 0; + return 0; } } public static void checkCompatibleWindowsVersion() { String disableVersionCheckPropertyValue = System.getProperty(DISABLE_WINDOWS_VERSION_CHECK_PROPERTY, Boolean.FALSE.toString()); boolean versionCheckDisabled = "".equals(disableVersionCheckPropertyValue) || Boolean.TRUE.toString().equalsIgnoreCase(disableVersionCheckPropertyValue); - if (!versionCheckDisabled && WIN32_BUILD < WIN32_MINIMUM_COMPATIBLE_BUILD) { + if (!versionCheckDisabled && WIN32_BUILD < MINIMUM_COMPATIBLE_BUILD) { System.err.println(String.format("Incompatible OS: Minimum Windows build version is %s but current is %s", - WIN32_MINIMUM_COMPATIBLE_BUILD, WIN32_BUILD)); + MINIMUM_COMPATIBLE_BUILD, WIN32_BUILD)); System.exit(1); } } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java index ca2f165452e..788d239be88 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java @@ -20,6 +20,7 @@ import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.win32.*; +import org.eclipse.swt.internal.win32.version.*; /** * Instances of this class represent a selectable user interface object that @@ -1351,7 +1352,7 @@ LRESULT wmNotifyChild (NMHDR hdr, long wParam, long lParam) { int inset = 2; int radius = 3; - if (useDarkModeExplorerTheme && (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN11_21H2)) { + if (useDarkModeExplorerTheme && OsVersion.IS_WIN11_21H2) { // On Win11, Light theme and Dark theme images have different sizes inset = 1; radius = 4; @@ -1362,7 +1363,7 @@ LRESULT wmNotifyChild (NMHDR hdr, long wParam, long lParam) { int r = nmcd.right - inset; int b = nmcd.bottom - inset; - if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN11_21H2) { + if (OsVersion.IS_WIN11_21H2) { // 'RoundRect' has left/top pixel reserved for border l += 1; t += 1; @@ -1488,7 +1489,7 @@ static int getThemeStateId(int style, boolean pressed, boolean enabled) { * The workaround is to use hot image in place of default. */ boolean hot = false; - if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN11_21H2) { + if (OsVersion.IS_WIN11_21H2) { if (!pressed && enabled) { hot = true; } 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 38775af168e..766f9176730 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 @@ -25,6 +25,7 @@ import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.ole.win32.*; import org.eclipse.swt.internal.win32.*; +import org.eclipse.swt.internal.win32.version.*; /** * Instances of this class are responsible for managing the @@ -2158,7 +2159,7 @@ public static boolean isSystemDarkTheme () { /* * The registry settings, and Dark Theme itself, is present since Win10 1809 */ - if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN10_1809) { + if (OsVersion.IS_WIN10_1809) { int[] result = OS.readRegistryDwords(OS.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", "AppsUseLightTheme"); if (result!=null) { @@ -5397,7 +5398,7 @@ private boolean setDPIAwareness(int desiredDpiAwareness) { } if (desiredDpiAwareness == OS.DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) { // "Per Monitor V2" only available in more recent Windows version - boolean perMonitorV2Available = OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN10_1809; + boolean perMonitorV2Available = OsVersion.IS_WIN10_1809; if (!perMonitorV2Available) { System.err.println("***WARNING: the OS version does not support DPI awareness mode PerMonitorV2."); return false; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java index 3033af31782..6cb9cf52dd9 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java @@ -19,6 +19,7 @@ import org.eclipse.swt.graphics.*; import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.win32.*; +import org.eclipse.swt.internal.win32.version.*; /** * Instances of this class represent the "windows" @@ -581,11 +582,11 @@ void createBalloonTipHandle () { void setTitleColoring() { int attributeID = 0; - if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN10_2004) { + if (OsVersion.IS_WIN10_2004) { // Documented since build 20348, but was already present since build 19041 final int DWMWA_USE_IMMERSIVE_DARK_MODE = 20; attributeID = DWMWA_USE_IMMERSIVE_DARK_MODE; - } else if (OS.WIN32_BUILD >= OS.WIN32_BUILD_WIN10_1809) { + } else if (OsVersion.IS_WIN10_1809) { // Undocumented value attributeID = 19; } else {