diff options
| author | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2018-12-28 22:23:26 +0100 |
|---|---|---|
| committer | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2018-12-28 22:23:26 +0100 |
| commit | 31e3405cdf03d2aa64f807cad92e8293a51b0c2f (patch) | |
| tree | 88a8bd27326bb414119697c25f5fc41954f130c6 /alf | |
| parent | 520cf456ddca96328c0e51e9ee81db10006f248d (diff) | |
use ALF_WM_UPDATEFONTS and more layout update corrections
Diffstat (limited to 'alf')
| -rw-r--r-- | alf/alf.cpp | 23 | ||||
| -rw-r--r-- | 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); |
