From 51daba89072cb66fe5e43015484a554555a40499 Mon Sep 17 00:00:00 2001 From: Jonas Kümmerlin Date: Thu, 23 Apr 2020 15:07:21 +0200 Subject: changed DPI handling: dpi is now pushed into every control and saved there --- alf/alfnotebook.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'alf/alfnotebook.cpp') diff --git a/alf/alfnotebook.cpp b/alf/alfnotebook.cpp index 501b072..6ffbe5d 100644 --- a/alf/alfnotebook.cpp +++ b/alf/alfnotebook.cpp @@ -17,6 +17,7 @@ typedef struct { HTHEME hTheme; ALFColor themeTabBgColor; DWORD flags; + int dpi; } ALFNotebookPriv; typedef struct { @@ -136,6 +137,16 @@ ALF_Notebook_PropagateFontToPages(HWND hwndNotebook, ALFNotebookPriv *priv, HFON } } +static void +ALF_Notebook_PropagateDpiChange(HWND hwndNotebook, ALFNotebookPriv *priv, WPARAM wparam, LPARAM lparam) +{ + int n = ALF_Notebook_InternalTabCount(hwndNotebook, priv->hwndTabCtrl); + for (int i = 0; i < n; ++i) { + HWND hwndPanel = ALF_NotebookTabPanel(hwndNotebook, i); + SendMessage(hwndPanel, ALF_WM_DPICHANGE, wparam, lparam); + } +} + static void ALF_Notebook_InternalHandleThemeChange(HWND hwndNotebook, ALFNotebookPriv *priv) { @@ -172,6 +183,7 @@ ALF_Notebook_InternalAddTab(HWND notebook, ALFNotebookPriv *priv, const TCHAR *t SetWindowPos(hwndPanel, NULL, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOOWNERZORDER); SendMessage(hwndPanel, WM_SETFONT, (WPARAM)SendMessage(priv->hwndTabCtrl, WM_GETFONT, 0, 0), 0); + SendMessage(hwndPanel, ALF_WM_DPICHANGE, 0, (LPARAM)priv->dpi); ALF_Notebook_SetSingleTabBackground(notebook, priv, hwndPanel); @@ -458,6 +470,10 @@ ALF__NotebookWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return (LRESULT)ALF_Notebook_GetWidgetFlags(hwnd, priv, (HWND)wParam); } else if (uMsg == ALF_WM_LYT_SETWDGTFLAGS) { return (LRESULT)ALF_Notebook_SetWidgetFlags(hwnd, priv, (HWND)wParam, (DWORD)lParam); + } else if (uMsg == ALF_WM_DPICHANGE) { + priv->dpi = (int)lParam; + ALF_Notebook_PropagateDpiChange(hwnd, priv, wParam, lParam); + return TRUE; } return DefWindowProc(hwnd, uMsg, wParam, lParam); @@ -499,7 +515,7 @@ ALF_AddNotebook(HWND parent, WORD id, int x, int y) ALF_HINSTANCE, NULL); - ALF_AddWidget(parent, x, y, hwndNtbk, 0, 0, ALF_LAYOUT_SIZE_QUERY | ALF_LAYOUT_INHERITFONT); + ALF_AddWidget(parent, x, y, hwndNtbk, 0, 0, ALF_LAYOUT_SIZE_QUERY | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_SENDDPICHANGE); return hwndNtbk; } -- cgit v1.2.3