From 31e3405cdf03d2aa64f807cad92e8293a51b0c2f Mon Sep 17 00:00:00 2001 From: Jonas Kümmerlin Date: Fri, 28 Dec 2018 22:23:26 +0100 Subject: use ALF_WM_UPDATEFONTS and more layout update corrections --- alf/alf.cpp | 23 +++++++++++++++++------ alf/alfpriv.h | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/alf/alf.cpp b/alf/alf.cpp index e71e3a1..c83ac4a 100644 --- a/alf/alf.cpp +++ b/alf/alf.cpp @@ -49,8 +49,12 @@ ALF_UpdateFontForWidget(ALFWindowPriv *priv, ALFWidgetPriv *widget) void ALF_UpdateFonts(HWND win) { - ALFWindowPriv *priv = (ALFWindowPriv*)GetWindowLongPtr(win, 0); + SendMessage(win, ALF_WM_UPDATEFONTS, 0, 0); +} +void +ALF_UpdateFontsPriv(HWND win, ALFWindowPriv *priv) +{ priv->fonts.dpi = priv->app->compatFn->GetDpiForWindow(win); NONCLIENTMETRICS ncm; @@ -347,6 +351,11 @@ ALF_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) return (LRESULT)priv->app; } + if (msg == ALF_WM_UPDATEFONTS) { + ALF_UpdateFontsPriv(hwnd, priv); + return 0; + } + if (msg == WM_ACTIVATE) { if (!HIWORD(wparam)) { // if !minimized if (LOWORD(wparam)) { @@ -391,8 +400,9 @@ ALF_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (!alwaysUnderline) { SendMessage(hwnd, WM_UPDATEUISTATE, MAKEWPARAM(UIS_INITIALIZE, 0), 0); } - ALF_UpdateFonts(hwnd); - ALF_RecalculateLayout(hwnd); + ALF_UpdateFontsPriv(hwnd, priv); + ALF_CalculateSizes(priv); + ALF_ApplyLayout(hwnd, priv); } if (msg == WM_DESTROY && priv->vtbl->destroy) { @@ -413,15 +423,16 @@ ALF_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) } if (msg == WM_DPICHANGED) { - ALF_UpdateFonts(hwnd); + ALF_UpdateFontsPriv(hwnd, priv); ALF_CalculateSizes(priv); RECT *r = (RECT*)lparam; SetWindowPos(hwnd, NULL, r->left, r->top, r->right-r->left, r->bottom-r->top, SWP_NOACTIVATE|SWP_NOZORDER); } if (msg == WM_THEMECHANGED || msg == WM_SETTINGCHANGE) { - ALF_UpdateFonts(hwnd); - ALF_RecalculateLayout(hwnd); + ALF_UpdateFontsPriv(hwnd, priv); + ALF_CalculateSizes(priv); + ALF_ApplyLayout(hwnd, priv); } if (msg == DM_GETDEFID) { diff --git a/alf/alfpriv.h b/alf/alfpriv.h index 14c529a..5affe15 100644 --- a/alf/alfpriv.h +++ b/alf/alfpriv.h @@ -66,3 +66,5 @@ struct ALFAppPriv { ALFCompatFunctions * ALF_CreateCompatFuncTable(void); +void +ALF_UpdateFontsPriv(HWND hwnd, ALFWindowPriv *priv); -- cgit v1.2.3