summaryrefslogtreecommitdiff
path: root/src/mir_core
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-06-16 22:32:40 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-06-16 22:32:40 +0300
commitb306ebad307bc450d0639ee0169976fa50a84b40 (patch)
treecef022b550448034401fdb35e00347cd3902133d /src/mir_core
parentaa37139121fccf4d304cc07d546b2b96ebe6dbcb (diff)
Utils_CorrectFontSize - a function for dynamic font size adjustment
Diffstat (limited to 'src/mir_core')
-rw-r--r--src/mir_core/src/Windows/miranda.cpp11
-rw-r--r--src/mir_core/src/Windows/winutil.cpp15
-rw-r--r--src/mir_core/src/mir_core.def1
-rw-r--r--src/mir_core/src/mir_core64.def1
4 files changed, 23 insertions, 5 deletions
diff --git a/src/mir_core/src/Windows/miranda.cpp b/src/mir_core/src/Windows/miranda.cpp
index a00eb3d448..7446eb1ba0 100644
--- a/src/mir_core/src/Windows/miranda.cpp
+++ b/src/mir_core/src/Windows/miranda.cpp
@@ -183,6 +183,11 @@ static void LoadCoreModule(void)
InitTimeZones();
InitialiseModularEngine();
+ wchar_t wszIniPath[MAX_PATH];
+ PathToAbsoluteW(L"mirandaboot.ini", wszIniPath);
+ if (GetPrivateProfileIntW(L"Interface", L"DpiAware", 0, wszIniPath) == 1)
+ g_bEnableDpiAware = true;
+
CreateServiceFunction(MS_SYSTEM_RESTART, RestartMiranda);
hShutdownEvent = CreateHookableEvent(ME_SYSTEM_SHUTDOWN);
@@ -255,15 +260,11 @@ MIR_CORE_DLL(void) BeginMessageLoop()
bufferedPaintUninit = (pfnBufferedPaintUninit)GetProcAddress(hThemeAPI, "BufferedPaintUninit");
}
- wchar_t wszIniPath[MAX_PATH];
- PathToAbsoluteW(L"mirandaboot.ini", wszIniPath);
- if (GetPrivateProfileIntW(L"Interface", L"DpiAware", 0, wszIniPath) == 1) {
+ if (g_bEnableDpiAware) {
typedef BOOL (WINAPI *pfnSetProcessDPIAware_t)(void);
auto *pFunc = (pfnSetProcessDPIAware_t)GetProcAddress(GetModuleHandleW(L"user32"), "SetProcessDPIAware");
if (pFunc != nullptr)
pFunc();
-
- g_bEnableDpiAware = true;
}
if (bufferedPaintInit)
diff --git a/src/mir_core/src/Windows/winutil.cpp b/src/mir_core/src/Windows/winutil.cpp
index f22b5e3fd9..4e4846a467 100644
--- a/src/mir_core/src/Windows/winutil.cpp
+++ b/src/mir_core/src/Windows/winutil.cpp
@@ -116,3 +116,18 @@ MIR_CORE_DLL(int) Utils_AssertInsideScreen(RECT *rc)
return 1;
}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+static LOGFONTW g_lfDefault;
+
+MIR_CORE_DLL(int) Utils_CorrectFontSize(int size)
+{
+ if (!g_bEnableDpiAware)
+ return size;
+
+ if (!g_lfDefault.lfWeight)
+ SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(g_lfDefault), &g_lfDefault, FALSE);
+
+ return size * g_lfDefault.lfWeight / -12;
+}
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def
index 694d3ed211..558e90dc3e 100644
--- a/src/mir_core/src/mir_core.def
+++ b/src/mir_core/src/mir_core.def
@@ -1539,3 +1539,4 @@ Miranda_IsTerminated @1758
Miranda_SetTerminated @1759
Miranda_WaitOnHandle @1760
Miranda_WaitOnHandleEx @1761
+_Utils_CorrectFontSize@4 @1762 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def
index 9b283b025d..a3f03dab57 100644
--- a/src/mir_core/src/mir_core64.def
+++ b/src/mir_core/src/mir_core64.def
@@ -1539,3 +1539,4 @@ Miranda_IsTerminated @1758
Miranda_SetTerminated @1759
Miranda_WaitOnHandle @1760
Miranda_WaitOnHandleEx @1761
+Utils_CorrectFontSize @1762 NONAME