https://git.reactos.org/?p=reactos.git;a=commitdiff;h=75c0dc0cd850a503413175d24fab3b23c1360ec0
commit 75c0dc0cd850a503413175d24fab3b23c1360ec0 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Sat Mar 15 09:31:15 2025 +0900 Commit: GitHub <nore...@github.com> CommitDate: Sat Mar 15 09:31:15 2025 +0900 [EXPLORER][COMCTL32][SHELL32] Enable SPI_SETICONTITLELOGFONT (#7783) Enable desktop icon title font setting. JIRA issue: CORE-13601 - Forward WM_SETTINGCHANGE message up to ListView. - ListView accepts WM_SETTINGCHANGE message. - Enable icon spacing. --- base/shell/explorer/traywnd.cpp | 3 +++ dll/win32/comctl32/listview.c | 29 +++++++++++++++++++++++++++++ dll/win32/shell32/CDefView.cpp | 1 + 3 files changed, 33 insertions(+) diff --git a/base/shell/explorer/traywnd.cpp b/base/shell/explorer/traywnd.cpp index f853609077f..d5695c7411c 100644 --- a/base/shell/explorer/traywnd.cpp +++ b/base/shell/explorer/traywnd.cpp @@ -2454,6 +2454,9 @@ ChangePos: CheckTrayWndPosition(); } + if (m_DesktopWnd) + ::SendMessageW(m_DesktopWnd, uMsg, wParam, lParam); + if (m_StartMenuPopup && lstrcmpiW((LPCWSTR)lParam, L"TraySettings") == 0) { HideStartMenu(); diff --git a/dll/win32/comctl32/listview.c b/dll/win32/comctl32/listview.c index eb165e835c4..f50e32847fb 100644 --- a/dll/win32/comctl32/listview.c +++ b/dll/win32/comctl32/listview.c @@ -12001,7 +12001,36 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } return DefWindowProcW(hwnd, uMsg, wParam, lParam); +#ifdef __REACTOS__ + case WM_SETTINGCHANGE: /* Same as WM_WININICHANGE */ + if (wParam == SPI_SETICONMETRICS || + wParam == SPI_SETICONTITLELOGFONT || + wParam == SPI_SETNONCLIENTMETRICS || + (!wParam && !lParam)) + { + BOOL bDefaultOrNullFont = (infoPtr->hDefaultFont == infoPtr->hFont || !infoPtr->hFont); + LOGFONTW logFont; + SystemParametersInfoW(SPI_GETICONTITLELOGFONT, 0, &logFont, 0); + + if (infoPtr->autoSpacing) + LISTVIEW_SetIconSpacing(infoPtr, -1, -1); + + if (infoPtr->hDefaultFont) + DeleteObject(infoPtr->hDefaultFont); + infoPtr->hDefaultFont = CreateFontIndirectW(&logFont); + + if (bDefaultOrNullFont) + infoPtr->hFont = infoPtr->hDefaultFont; + + LISTVIEW_SaveTextMetrics(infoPtr); + LISTVIEW_UpdateItemSize(infoPtr); + LISTVIEW_UpdateScroll(infoPtr); + LISTVIEW_InvalidateRect(infoPtr, NULL); + } + return 0; +#else /* case WM_WININICHANGE: */ +#endif default: if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg)) diff --git a/dll/win32/shell32/CDefView.cpp b/dll/win32/shell32/CDefView.cpp index 46322dfec26..60301182694 100644 --- a/dll/win32/shell32/CDefView.cpp +++ b/dll/win32/shell32/CDefView.cpp @@ -3008,6 +3008,7 @@ LRESULT CDefView::OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL if (wParam == SPI_SETDESKWALLPAPER || wParam == 0) UpdateListColors(); + m_ListView.SendMessage(uMsg, wParam, lParam); return S_OK; }