summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alf/alf.cpp23
-rw-r--r--alf/alfpriv.h2
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);